numpy 創建ndarray(from existing data)
阿新 • • 發佈:2018-06-18
創建 nump tee spa 數組 array nbsp 緩沖區 一維數組
1 numpy.array
array(object[, dtype=None, copy=True, order=‘K‘, subok=False, ndmin=0])
2 numpy.asarray
asarray(a[, dtype=None, order=None])
將(列表、元組及其嵌套結構)數據a轉換成ndarray
返回ndarray數據
1 當a為元組、列表array時
返回值值與輸入值不相同
import numpy as np a = [1,2] b = np.asarray(a) print(a) #[1, 2] print(b) #[1 2]
2 當a為ndarray且不做任何改變時
原數據a與返回值為同一個地址
import numpy as np a = np.array([1,2]) b = np.asarray(a) a += 2 print(a) #[3 4] print(b) #[3 4] print(a is b) #True
3 當a為ndarray且改變數據結構時
復制一份數據
import numpy as np a = np.array([1,2],dtype=np.float32) b = np.asarray(a,dtype=‘i4‘) a += 2 print(a) #[3. 4.] print(b) #[1 2] print(a isb) #False
總之,可理解為不改變元數據時,為同一個數據地址,當改變元數據時,返回值會復制元數據並進行asarray格式化。
3 numpy.frombuffer
frombuffer(buffer[, dtype=float, count=-1, offset=0])
將緩沖區解釋為一維數組。
暴露緩沖區接口的任何對象都用作參數來返回ndarray
。
buffer - 一個暴露在緩沖取接口的對象
dtype - 返回ndarray的數據類型,默認float
count - 讀取數據數量,默認-1,也即讀取所有數據 int數據類型
offset - 讀取數據的起始位置(偏移量)
返回值ndarray
import numpy as np s = ‘hello world‘ a = np.frombuffer(s,dtype=‘S1‘,count=5,offset=6) print(a) # 報錯:AttributeError: ‘str‘ object has no attribute ‘__buffer__‘
一直沒有弄明白,一直報錯,要不就是 itemsize cannot be zero in type
numpy 創建ndarray(from existing data)