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
时,会沿着行方向来添加,我们就不再这里举例了。