如何将 1d numpy 数组附加到 2d numpy 数组 python
Posted
技术标签:
【中文标题】如何将 1d numpy 数组附加到 2d numpy 数组 python【英文标题】:how to append a 1d numpy array to a 2d numpy array python 【发布时间】:2021-10-12 13:27:51 【问题描述】:我想在数组[[1, 1, 1], [2, 2, 2]]上追加一个数组[3, 3, 3],这样就变成了[[1, 1, 1] , [2, 2, 2], [3, 3, 3]]
这是我的代码:
import numpy as np
arr1 = np.array([[1, 1, 1],
[2, 2, 2]])
arr2 = np.append(arr1, [3, 3, 3])
print (arr2)
而不是打印[[1, 1, 1], [2, 2, 2], [3, 3, 3]]
,
它打印[1, 1, 1, 2, 2, 2, 3, 3, 3]
。
我对 numpy 很陌生,我不明白为什么 2d 数组突然变成 1d。
【问题讨论】:
您回去阅读np.append
文档了吗?它解释了扁平化。
是的,它说你必须使用参数 ``axis=0``` 。我尝试这样做:arr2 = np.append(arr1, [3, 3, 3], axis=0)
,它给了我错误:all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
np.append
基本上是调用np.concatenate
的另一种方式,正如对错误的回溯所示。一个数组是 (2,3) 形状,另一个是 (3,)。第二个应该是 (1,3) 形状来连接。 vstack
是 concatenate
的替代用户,负责处理该细节。
【参考方案1】:
您可以使用有用的numpy
的标准方法vstack
。
这是我的代码。
初始化二维 numpy 数组
initial_array = np.array([
[1, 1, 1],
[2, 2, 2]
])
定义要附加到初始数组的数组
new_array = np.array([3, 3, 3])
将新数组作为行附加到初始数组
result = np.vstack((initial_array, new_array))
这是结果
print(result)
array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
您可以在here阅读更多详细信息。
希望这个答案对您有所帮助。谢谢。
【讨论】:
【参考方案2】:import numpy as np
arr1 = np.array([[1, 1, 1],
[2, 2, 2]])
arr2 = np.append(arr1, [[3, 3, 3]], axis=0)
print (arr2)
输出:
[[1 1 1]
[2 2 2]
[3 3 3]]
【讨论】:
【参考方案3】:使用numpy.vstack
:
arr2 = np.vstack((arr1, [3,3,3]))
>>> arr2
[[1 1 1]
[2 2 2]
[3 3 3]]
【讨论】:
以上是关于如何将 1d numpy 数组附加到 2d numpy 数组 python的主要内容,如果未能解决你的问题,请参考以下文章
给定两个 2D numpy 数组 A 和 B,如何有效地将采用两个 1D 数组的函数应用于 A 和 B 行的每个组合?
Numpy quirk:将函数应用于两个 1D 数组的所有对,以获得一个 2D 数组