NumPy 陣列追加
Jinku Hu
2021年5月13日
跟 Python 列表操作 append
類似,NumPy 中也有 append
函式,但它的表現有些時候也像 Python 列表裡面的 extend
方法。
陣列 append
我們先把 ndarray.append
的語法列出來,方便學習和查閱。
numpy.append(arr, values, axis = None)
輸入引數
引數名稱 | 資料型別 | 說明 |
---|---|---|
arr |
array_like | 要新增元素的陣列 |
values |
array_like | 被新增陣列 |
axis |
INT | 根據此處指定的軸方向來進行 append 操作 |
我們來開始舉例,
In[1]: import numpy as np
arrayA = np.arange(12).reshape(3, 4)
arrayB = np.ones((1, 4))
np.append(arrayA, arrayB)
Out[1]: array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 1.,
1., 1., 1.])
當 axis
沒有被賦值時,它會將 arr
重構為一個一維陣列,然後再將被重構為一維陣列的 values
新增到它的後面,最終結果是一個一維的陣列。所以,這種情況下,它不關心兩個陣列的形狀。
In[2]: np.append(arrayA, arrayB, axis=0)
Out[2]: array([[0., 1., 2., 3.],
[4., 5., 6., 7.],
[8., 9., 10., 11.],
[1., 1., 1., 1.]])
In[2]: np.append(arrayA, np.ones((1, 3)), axis=0)
---------------------------------------------------------------------------
ValueError Traceback(most recent call last)
<ipython-input-25-fe0fb14f5df8 > in < module > ()
--- -> 1 np.append(arrayA, np.ones((1, 3)), axis=0)
D: \ProgramData\Anaconda3\lib\site-packages\numpy\lib\function_base.py in append(arr, values, axis)
5164 values = ravel(values)
5165 axis = arr.ndim-1
-> 5166 return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
當 axis=0
時,values
陣列會沿著 arr
陣列列方向上來新增,假如兩個陣列不具有相同的行元素數量時,就會產生錯誤 ValueError: all the input array dimensions except for the concatenation axis must match exactly
。
同理的,當 axis=1
時,會沿著行方向來新增,我們就不再這裡舉例了。