numpy - 来自1d数组的3d数组中的1个字段值

时间:2018-02-09 08:43:43

标签: python arrays numpy

我有这个问题,我正在尝试构建一个3D数组,我需要稍后覆盖例如。 [:,:,5]带有1D数组的值。我的数组在numpy

中看起来像这样

3D:

[[[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]

 [[   0.  150.   10.  300.   25.    0.]
  [   1.   25.    2.   75.    7.    0.]
  [   4.    0.    0.    0.    0.    0.]
  [   5.    0.    0.    0.    0.    0.]]]

1D:

[ 1806.    1092.     150.     150.    2669.     150.     150.     150.
   310.    7181.85]

..我想要的是这个:

3d[0][0][5] = 1d[0]
3d[0][1][5] = 1d[0]
3d[0][2][5] = 1d[0]
3d[0][3][5] = 1d[0]
3d[1][0][5] = 1d[1]
3d[1][1][5] = 1d[1]
3d[1][2][5] = 1d[1]
3d[1][3][5] = 1d[1]

等等。我一直在尝试这样的事情:

list_product_pricegroup[:,:,5] = migrete_array[:]
没有任何运气,希望有人能指导我朝着正确的方向前进。

1 个答案:

答案 0 :(得分:2)

您的数组list_product_pricegroup是10x4x6而migrete_array是10的1-D向量。由于在赋值之前索引(5)数组list_product_pricegroup,它现在是10x4矩阵。然后你需要将migrete_array提升为大小为4x1的2-D数组进行广播,如下:

list_product_pricegroup[..., 5] = migrete_array[:, None]