Numpy模組:01-陣列生成操作
阿新 • • 發佈:2021-02-18
NumPy陣列是一個多維陣列物件,稱為ndarray。其由兩部分組成:
① 實際的資料
② 描述這些資料的元資料
利用指定元素建立陣列
建立一個一維陣列
import numpy as np
# 建立一個一維陣列
arr1 = np.array([1,2,3])
print("列表:",[1,2,3])
print("陣列:",arr1)
print(type(arr1))
===========================================
列表: [1, 2, 3]
陣列: [1 2 3]
< class 'numpy.ndarray'>
建立多維陣列,注意陣列的最外層方括號
arr2 = np.array([[1,2,3],[4,5,6]])
arr3 = np.array([[[1,2,3],
[4,5,6]],
[[7,8,9],
[10,11,12]]])
print(arr2)
print(arr3)
# 輸出陣列的秩(維度數量)
print('arr2的秩為:',arr2.ndim)
print('arr3的秩為:',arr3.ndim)
============ ===============================
[[1 2 3]
[4 5 4]]
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
arr2的秩為: 2
arr3的秩為: 3
陣列的形狀,對於n行m列的陣列,shape結果為(n,m)
print(arr2.shape)
print('arr2內元素個數:',arr2.size)
========================
(2, 3)
6
利用隨機數生成陣列
arr1 = np.array(range(10))
arr2 = np.arange(10)#生成器
#利用隨機數和規定形狀來生成陣列
arr3 = np.random.rand(10).reshape(2,5)
print(arr1)
print(arr2)
print(arr3)
===========================
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[[ 0.65404495 0.2111791 0.97948226 0.51258496 0.09506835]
[ 0.00799941 0.47655029 0.7331052 0.37034918 0.08403921]]
arange()函式:生成指定範圍內的陣列,陣列元素型別會自動識別
print(np.arange(10))
print(np.arange(10.0))
print(np.arange(5,10))
print(np.arange(5.0,12.0,2)) #返回5.0-12.0的部分,步長為2
print(np.arange(10000)) # 陣列量過大,numpy會只顯示邊角部分
============================
[0 1 2 3 4 5 6 7 8 9]
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[5 6 7 8 9]
[ 5. 7. 9. 11.]
[ 0 1 2 ..., 9997 9998 9999]
linspace()函式:返回在指定範圍內[起,止]計算的num個均勻間隔樣本。
print(np.linspace(10,20,num = 21))
print("-----------------------")
#endpoint引數,將後閉區間變成開區間
print(np.linspace(10,20,num = 21,endpoint=False))
#retstep引數:預設false。輸出結果陣列和步長的元組
print("-----------------------")
arr1 = np.linspace(10,20,num = 21,endpoint = True,retstep = True)
print(type(arr1))
print(arr1)
============================
[ 10. 10.5 11. 11.5 12. 12.5 13. 13.5 14. 14.5 15. 15.5
16. 16.5 17. 17.5 18. 18.5 19. 19.5 20. ]
-----------------------
[ 10. 10.47619048 10.95238095 11.42857143 11.9047619
12.38095238 12.85714286 13.33333333 13.80952381 14.28571429
14.76190476 15.23809524 15.71428571 16.19047619 16.66666667
17.14285714 17.61904762 18.0952381 18.57142857 19.04761905
19.52380952]
-----------------------
<class 'tuple'>
(array([ 10. , 10.5, 11. , 11.5, 12. , 12.5, 13. , 13.5, 14. ,
14.5, 15. , 15.5, 16. , 16.5, 17. , 17.5, 18. , 18.5,
19. , 19.5, 20. ]), 0.5)
特殊形式的陣列
eye()函式:
np.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
print(np.eye(5))
==============
[[ 1. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 0. 0. 1. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 1.]]
zeros()/zeros_like()/ones()/ones_like():
生成指定形狀的陣列,將元素填充為0或1
numpy.zeros(shape, dtype=float, order='C')
shape:陣列緯度,二維以上需要用(),且輸入引數為整數
dtype:資料型別,預設numpy.float64
order:是否在儲存器中以C或Fortran連續(按行或列方式)儲存多維資料。
ar1 = np.zeros(5)
ar2 = np.zeros((2,2), dtype = np.int)
print(ar1,ar1.dtype)
print(ar2,ar2.dtype)
=========================
[ 0. 0. 0. 0. 0.] float64
[[0 0]
[0 0]] int32
np.zeros_like(a, dtype=None, order='K', subok=True)
Return an array of zeros with the same shape and type as a given array.
a:指定的陣列
ar3 = np.array([list(range(5)),list(range(5,10))])
ar4 = np.zeros_like(ar3)
print(ar3)
print(ar4)
=========================
[[0 1 2 3 4]
[5 6 7 8 9]]
[[0 0 0 0 0]
[0 0 0 0 0]]
ar5 = np.ones(9)
ar6 = np.ones((2,3,4))
print(ar5)
print(ar6)
=========================
[ 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]]