我正在使用兩個 numpy 浮點數陣列
Rs = np.linspace(*realBounds, realResolution, dtype=fdtype)
Is = np.linspace(*imagBounds, imagResolution, dtype=fdtype)
用 shape制作一個Zs復數網格(realResolution, imagResolution)。我只想指定資料型別Zs并使用它來確定浮點資料型別fdtype。
正如我從這個頁面所了解的那樣,復雜的資料型別總是表示為具有相同資料型別的兩個浮點數,因此為什么Rs和Is兩者都有dtype=fdtype。如果的資料型別Zs被指定為np.csingle然后我想fdtype成為np.single,如果它被指定為np.dtype("complex128")那么我想fdtype成為np.dtype("float64"),依此類推。有沒有很好的方法來做到這一點?
編輯:我同樣對發送到的反函式np.single感興趣np.csingle。
uj5u.com熱心網友回復:
我認為 numpy 中沒有這樣的功能,但您可以輕松地使用自己的 using num,它唯一地標識每個內置型別:
def get_corresonding_dtype(dt):
return {11: np.csingle,
12: np.cdouble,
13: np.clongdouble,
14: np.single,
15: np.double,
16: np.longdouble}[np.dtype(dt).num]
字典是從中獲得的{np.dtype(dt).num: dt for dt in (np.single, np.double, np.longdouble, np.csingle, np.cdouble, np.clongdouble)},回傳
{11: numpy.float32,
12: numpy.float64,
13: numpy.longdouble,
14: numpy.complex64,
15: numpy.complex128,
16: numpy.clongdouble}
在win-amd64( sysconfig.get_platform()) 上。名稱可能會有所不同,例如linux-x86_64它顯示numpy.complex256而不是numpy.clongdouble,但感謝num您不需要注意它。
因此,例如對于所有np.double, np.float_, np.float64,float等'float64',get_corresonding_dtype將回傳numpy.complex128。
如果你喜歡,你也可以添加np.half到23: np.csingledict,因為 numpy 中沒有復雜的 half/float16 型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494407.html
標籤:Python 麻木的 numpy-ndarray numpy-dtype
上一篇:回圈計算專案串列并附加
