numaralı sayısal float dizisi olarak ayarlayabilir miyim? Sayısal programımda bir sorunum var ve bunun hassas bir sorun olup olmadığını merak ediyorum (örn. Yuvarlama hatası). Programımdaki tüm float dizilerini, kodumdan geçmeden ve dtype = 'float128' yazmadan, float128 dizilerine dönüştürmenin hızlı bir yolu var mı? Dizilerim float64, ama ben asla açık bir şekilde dtype = 'float64' yazdım, bu yüzden bu varsayılan davranışı değiştirmenin bir yolu olduğunu umuyordum.Float128'i
cevap
Bunu başarmak için değiştirebileceğiniz merkezi bir "yapılandırma" olduğunu sanmıyorum. Ne yapabilirsin bazı seçenekler:
yalnızca numpy fabrika fonksiyonlarının çok az tarafından diziler oluşturuyorsanız, kendi sürümleri tarafından bu işlevleri yerine. Bir modülünü
mynumpy.py
ve ithalat yazabilir Eğer
from numpy import empty
gibi bu işlevleri içe Eğer
import numpy
yapıyorsanız sadece
yapabilirsinizhepfrom numpy import float128, empty as _empty def empty(*args, **kwargs): kwargs.update(dtype=float128) _empty(*args, **kwargs)
dtype=myfloat
kullanmak oimport mynumpy as numpy
gibi kodunuzu refactor. Bu gelecekte bu tür değişiklikleri kolaylaştıracaktır. Bu yaklaşımı, mümkün olan en az sayıda yerde kodlanmış gerçek veri türüne sahip olmak için
numpy.empty_like()
,numpy.zeros_like()
venumpy.ones_like()
ile birleştirebilirsiniz.Alt sınıf
numpy.ndarray
ve yalnızca özel dizilerinizi yeni diziler oluşturmak için kullanın.
Bunları sırayla denemek muhtemelen en iyisidir: 1-2-3. Son seçenek (alt sınıf "numpy.ndarray") zariftir, ancak tuzaklar vardır. Örneğin, dizinin dilimlerini öznitelikler, yani 'self.myslice = self [0,:] 'olarak saklayarak dizi çöp toplama işlemini yanlışlıkla kırdım. Daha fazla işlem yaptığım için RAM'im yavaş yavaş doldu. –
var float64' 'bir' numpy.float_' istenen sabit olmakla birlikte, numpy.float128' 'değiştirmeyi ve isteyen' numpy.array ([1.1]). Dtype' geri 'float64' tutar. – eumiro
Float128 desteği kabataslak, irc windows'la çalışmayacak. Float96 ile aynı şeyi deneyin. – tillsten
Linux (Ubuntu) sistemi üzerinde çalışıyorum. Orada destek nasıl? Pencerelerde çalışmadığı gerçeği, sadece kendim için bir kontrol olduğu için gerçekten önemli değil. – Eskil