1. 程式人生 > 其它 >Numpy模組:01-陣列生成操作

Numpy模組:01-陣列生成操作

技術標籤:numpynumpy

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.]]]