我有一个numpy数组
import numpy as np
initial_array = np.array([[
[0, 1],
[1, 2],
[2, 3],
[3, 4]],
[[4, 5],
[5, 6],
[6, 7],
[7, 8]]])
我有一个要添加的数组:
to_add = np.array([
[ 8, 9],
[ 9, 10],
[10, 11],
[11, 12]])
在此,initial_array
的形状为(2, 4, 2)
,to_add
的形状为(4, 2)
。我正在寻找形状为(3, 4, 2)
的最终结果:
result = np.array([[
[ 0, 1],
[ 1, 2],
[ 2, 3],
[ 3, 4]],
[[ 4, 5],
[ 5, 6],
[ 6, 7],
[ 7, 8]],
[[ 8, 9],
[ 9, 10],
[10, 11],
[11, 12]]])
如何在不将numpy数组转换回python列表的情况下完成此操作,是否可以单独使用numpy来做到这一点?
答案 0 :(得分:2)
实际上,我正在展示几种方法:
>>> result = np.insert(initial_array, initial_array.shape[0], to_add, axis=0)
# or
>>> result = np.vstack((initial_array,to_add[None,...]))
# or
>>> result = np.array([*initial_array, to_add])
答案 1 :(得分:1)
除了其他答案,您还可以使用np.newaxis()
:
np.concatenate([initial_array, to_add[np.newaxis, :]])
结果:
Out[75]:
array([[[ 0, 1],
[ 1, 2],
[ 2, 3],
[ 3, 4]],
[[ 4, 5],
[ 5, 6],
[ 6, 7],
[ 7, 8]],
[[ 8, 9],
[ 9, 10],
[10, 11],
[11, 12]]])
答案 2 :(得分:1)
无需重塑:
np.concatenate((initial_array, [to_add]))
答案 3 :(得分:1)
您可以仅向to_add
添加一个附加轴,以便可以直接将其连接:
np.concatenate([initial_array, to_add[None,:]])
array([[[ 0, 1],
[ 1, 2],
[ 2, 3],
[ 3, 4]],
[[ 4, 5],
[ 5, 6],
[ 6, 7],
[ 7, 8]],
[[ 8, 9],
[ 9, 10],
[10, 11],
[11, 12]]])
答案 4 :(得分:0)
您可以在列表内将numpy.append与to_add一起使用,并且仅在轴0上附加。
initial_array = np.array([[
[0, 1],
[1, 2],
[2, 3],
[3, 4]],
[[4, 5],
[5, 6],
[6, 7],
[7, 8]]])
to_add = np.array([
[ 8, 9],
[ 9, 10],
[10, 11],
[11, 12]])
final = np.append(initial_array, [to_add], axis=0)