我完全被這個困惑了。numpy.array有和沒有指定dtype表現奇怪
從以下
import numpy as np
a = np.array([4, -9])
a[0] = 0.4
a
我預期輸出:array([ 0.4, -9])
。但它給我
array([ 0, -9])
。
但是,當我改變了dtype
到f
a = np.array([4, -9], 'f')
a[0] = 0.4
a
它給了我的預期了放array([ 0.40000001, -9. ], dtype=float32)
的文檔numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
說:
D型:數據類型,可選 陣列所需的數據類型。如果沒有給出,那麼類型將被確定爲保持序列中對象所需的最小類型。這個參數只能用於'上傳'數組。對於向下轉換,請使用.astype(t)方法。
當我初始化數組初始化它的值integers
,所以當我索引與float
陣列只承認0.4
的integer
一部分,因此給了我0
。這是我的理解。它是否正確?。但我仍然對這種行爲感到驚訝。
問題:這裏究竟發生了什麼?
非常好。這解決了這個問題。顯然,我需要學習很多東西。 – minibuffer
我不喜歡使用'dtype = object'來保存浮動和整數的想法。如果需要,可以混合字符串和數字,或者更好地保存列表等內容。但對於純數字數據,最好使用數字dtype。 – hpaulj
@hpaulj接受。使用非數字類型,您將失去所有矢量化優勢。 –