NumPy(一):數組

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)可以創建數組,zerosones也可以創建指定形狀全爲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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章