首页 > 解决方案 > 用列表填充数组元素

问题描述

我有以下数组: b=np.zeros((5,5)).astype('int32')

我希望使用以下两个数组使用列表填充上述数组的每个元素: x=np.linspace(11, 15, 5)

`y=np.linspace(6, 10, 5)`

我正在查看的输出:

`array([[11,6], [11,7], [11,8], [11,9], [11,10]],
       [[12,6], [12,7], [12,8], [12,9], [12,10]],
       [[13,6], [13,7], [13,8], [13,9], [13,10]],
       [[14,6], [14,7], [14,8], [14,9], [14,10]],
       [[15,6], [15,7], [15,8], [15,9], [15,10]])`

标签: pythonarrays

解决方案


就像@DocDriven 所说,您必须b先将数组的形状调整为(5, 5, 2).

之后,请注意,您可以通过 do 设置一整行值,并y通过 do设置一整列值。b[row,:,1] = yxb[:,col,0] = x

Numpy 还广播形状,这意味着您可以使用 1d 数组来填充 2d 数组;将在一次操作中b[:,:,1] = y填充所有值,而对值执行相同操作。yb[:,:,0] = x.reshape((5, 1))x

简而言之,您只需执行以下操作即可得到您想要的:

b = np.zeros((5, 5, 2)).astype('int32')
b[:,:,1] = y
b[:,:,0] = x.reshape((5, 1))

另一种方法是使用np.meshgrid()

b = np.array(np.meshgrid(x, y)).T.astype('int32')

推荐阅读