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