如何将一个一维的NumPy数组附加到一个二维的NumPy数组中,使用Python。

3
我想将数组[3, 3, 3]添加到数组[[1, 1, 1], [2, 2, 2]]末尾,使其变为[[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。


1
你是否回去阅读了np.append的文档?它解释了展平的原理。 - hpaulj
是的,它说你必须使用参数“axis=0”。我尝试使用以下代码:arr2 = np.append(arr1, [3, 3, 3], axis=0)但它给了我一个错误:所有输入数组的维度必须相同,但索引为0的数组具有2个维度,而索引为1的数组具有1个维度 - theboss theboss
1
np.append 基本上是调用 np.concatenate 的另一种方式,正如您错误的回溯所显示的那样。一个数组的形状为 (2,3),另一个数组的形状为 (3,)。第二个数组应该是 (1,3) 形状才能进行连接。vstackconcatenate 的另一种替代方法,可以处理这个细节。 - hpaulj
3个回答

4
您可以使用有用的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]])

您可以在这里阅读更多详细信息。

希望这个答案对您有所帮助。谢谢。


1
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]] 

1
使用 numpy.vstack
arr2 = np.vstack((arr1, [3,3,3]))
>>> arr2
[[1 1 1]
 [2 2 2]
 [3 3 3]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接