之前只见过列表list的append方法,昨天写代码的时候,看到了numpy库的append方法,记录一下。
简单的说,该方法功能就是将一个数组附加到另一个数组的尾部。
目录
官方帮助文档
参数
返回值
示例
axis无定义
axis=0的情况
axis=1的情况
axis=0和axis=1的图示
先看一个官方的帮助文档,嫌麻烦的可以直接看示例。看完示例再反过头看文档,其实理解的更好。
官方帮助文档
append(arr, values, axis=None)
Append values to the end of an array. 将值附加到数组的末尾。
参数
arr : array_like
Values are appended to a copy of this array. 值将附加到此数组的副本。
values : array_like
These values are appended to a copy of "arr". It must be of the correct shape (the same shape as "arr", excluding "axis"). If "axis" is not specified, "values" can be any shape and will be flattened before use.
这些值附加到"arr"的副本上。 它必须是正确的形状(与"arr"形状相同,不包括"轴")。 如果未指定"axis",则"values"可以是任何形状,并在使用前展平。
“与"arr"形状相同,不包括"轴"”,这句话的意思是说,一个数组两维,如果axis=0,则axis=1这一维形状要相同。如果设置了axis=1,则axis=0这一维要相同,具体可以看后面的例子。
axis : int, optional
The axis along which "values" are appended. If `axis` is not given, both `arr` and `values` are flattened before use.
附加“值”的轴。 如果没有给出`axis`,'arr`和`values`在使用前都会展平。
返回值
append : ndarray
A copy of "arr" with "values” appended to `axis`. Note that `append` does not occur in-place: a new array is allocated and filled. If `axis` is None, `out` is a flattened array.
带有"values"的"arr"的副本附加到"axis"。注意,"append"并不是就地发生的:一个新的数组被分配和填充。如果"axis"为空,则"out"是一个扁平数组。
示例
axis无定义
numpy.append(arr,values,axis=None):
返回由arr和values组成的新数组。axis是一个可选的值,当axis无定义时,返回总是为一维数组。
由下面的例子可以看出,不管两个数组是什么形式,返回的都是一维数组。
import numpy as np
HJL = np.append([1,2,3],[[4,5,6],[7,8,9]])
print(HJL)
# 当axis无定义时,是横向加成,返回总是为一维数组。
#[1 2 3 4 5 6 7 8 9]
HXH = np.append([[1,2],[3,4]],[[5,6,7],[8,9,10]])
print(HXH)
# [ 1 2 3 4 5 6 7 8 9 10]
axis=0的情况
axis=0,表示针对第1维进行操作,可以简单的理解为,加在了行上。所以行数增加,列数不变。
由此可知,列数必须保持相同。
【axis=0到底称作第0维还是第1维,我看各种说法都有,知道我在说什么就好】
import numpy as np
DYX = np.zeros((1,8))
HXH = np.ones((3,8))
XH = np.append(DYX, HXH,axis=0)
#先展示原来的数组
print(DYX) #(1, 8)
#[[0. 0. 0. 0. 0. 0. 0. 0.]]
print(HXH) # (3,8)
"""
[[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]]
"""
#组合后的结果
print(XH)
"""
[[0. 0. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]]
"""
#axis = 0,在第一维上拼接,所以说,(1,8)和(3,8)就变成了(4,8)
axis=1的情况
拓展列,行数不变。行数需要相同。
import numpy as np
DYX = np.zeros((3,1))
HXH = np.ones((3,8))
XH = np.append(DYX, HXH,axis=1)
print(DYX) #(3,1)
"""
[[0.]
[0.]
[0.]]
"""
print(HXH) # (3,8)
"""
[[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]]
"""
#最终结果:
print(XH)
"""
[[0. 1. 1. 1. 1. 1. 1. 1. 1.]
[0. 1. 1. 1. 1. 1. 1. 1. 1.]
[0. 1. 1. 1. 1. 1. 1. 1. 1.]]
"""
print(XH.shape) #(3, 9)
#axis = 1,在第二维上拼接,所以说,(3,1)和(3,8)就变成了(3,9)
axis=0和axis=1的图示
axis=0或1时的多维数组我没测试。因为还没用到,用到再说吧。
本篇完,如果错误,还望指正。