nadarray
Numpy最重要的一個特點就是N維數組對象(nadarray),該對象是一個快速而靈活的大數據集容器。
a.創建nadarray
np.array(data)
data1 = [1,2,3,4]
arr1 = np.array(data1)
arr1
#array([1, 2, 3, 4])
除了np.array(data)
可以創建數組,zeros
和ones
也可以創建指定形狀全爲0或全爲1的數組,empty
可以創建一個沒有任何具體指的數組。
np.zeros((3,6))
array([[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])
np.empty((2,2))
array([[7.50639772e-312, 3.21450328e+164],
[1.85692977e+216, 1.99392236e-077]])
其他數組創建函數
函數 | 說明 |
---|---|
array | 將列表,元組,數組或其他有序類型轉化爲ndarray |
asarray | 將輸入數據轉化爲ndarray,如果本身就是ndarray就不進行復制 |
arange | 類似於range,但返回的是nadarray而不是列表 |
ones,ones_like | 創建一個指定形狀全爲1的數組,ones_like以另一個數組爲參考,根據其形狀創建 |
zeros,zeros_like_ | 同上 |
empty,empty_ike | 創建新數組,只分配空間不填充任何值 |
eye,identity | 創建一個正方N*N的單位矩陣(對角線爲1,其餘爲0) |
array與asarray的區別
當數據源是ndarray時,array仍會copy出一個副本,佔用新的內存,但asarray不會
#輸入數據不是ndarray類型 array與asarray一樣
data1=[[1,1,1],[1,1,1],[1,1,1]]
arr2=np.array(data1)
arr3=np.asarray(data1)
data1[1][1]=2
print('data1:\n',data1)
print('arr2:\n',arr2)
print('arr3:\n',arr3)
data1:
[[1, 1, 1], [1, 2, 1], [1, 1, 1]]
arr2:
[[1 1 1]
[1 1 1]
[1 1 1]]
arr3:
[[1 1 1]
[1 1 1]
[1 1 1]]
#輸入數據是ndarray類型 array與asarray的不同
arr1=np.ones((3,3))
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[1]=2
print('arr1:\n',arr1)
print('arr2:\n',arr2)
print('arr3:\n',arr3)
arr1:
[[1. 1. 1.]
[2. 2. 2.]
[1. 1. 1.]]
arr2:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
arr3:
[[1. 1. 1.]
[2. 2. 2.]
[1. 1. 1.]]
zeros_like使用方法
data2 = np.array(
[[1,2,3],
[4,5,6]]
)
np.zeros_like(data2)
array([[0, 0, 0],
[0, 0, 0]])
numpy.eye()與np.identity()
numpy.eye(N,M=None,k=0,dtype=<class 'float'>,order='C)
(1)N:int型,表示的是輸出的行數
(2)M:int型,可選項,輸出的列數,如果沒有就默認爲N
(3)k:int型,可選項,對角線的下標,默認爲0表示的是主對角線,負數表示的是低對角,正數表示的是高對角。
(4)dtype:數據的類型,可選項,返回的數據的數據類型
(5)order:{‘C’,‘F'},可選項,也就是輸出的數組的形式是按照C語言的行優先’C',還是按照Fortran形式的列優先‘F'存儲在內存中
import numpy as np
a=np.eye(3)
print(a)
a=np.eye(4,k=1) #右上移動1
print(a)
a=np.eye(4,k=-1)
print(a)
a=np.eye(4,k=-3)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
np.identity(n,dtype=None)
參數:n,int型表示的是輸出的矩陣的行數和列數都是n
dtype:表示的是輸出的類型,默認是float
返回的是nxn的主對角線爲1,其餘地方爲0的數組
import numpy as np
a=np.identity(3)
print(a)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
b.ndarray的屬性
屬性 | 說明 |
---|---|
ndarray.shape | 數組維度的元組 |
ndarray.ndim | 數組維度 |
ndarray.size | 數組中的元素量 |
ndarray.itemsize | 一個數組元素的長度(字節) |
ndarray.dtype | 數組元素的類型 |
data2 = np.array(
[[1,2,3],
[4,5,6]]
)
print('data2.shape:',data2.shape)
print('data2.ndim:',data2.ndim)
print('data2.size:',data2.size)
print('data2.itemsize:',data2.itemsize)
print('data2.dtype:',data2.dtype)
data2.shape: (2, 3)
data2.ndim: 2
data2.size: 6
data2.itemsize: 4
data2.dtype: int32
c.ndarray的類型
arr1 = np.array([1,2,3],dtype = np.float64)
arr2 = np.array([1,2,3],dtype = np.int32)
print(arr1.dtype)
print(arr2.dtype)
float64
int32
Numpy的dtype有:浮點數,複數,整數,布爾值,字符串,還有python對象。
修改dtype的值ndarray.astype
arr = np.array([1,2,3],dtype = np.float64)
float_arr = arr.astype(np.float)
print(float_arr.dtype)
float64