1. 程式人生 > >numpy 創建ndarray(from existing data)

numpy 創建ndarray(from existing data)

創建 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 is
b) #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)