NumPy 陣列追加

Jinku Hu 2021年5月13日
NumPy 陣列追加

跟 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 時,會沿著行方向來新增,我們就不再這裡舉例了。

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook