如何用Numpy广播这个数组?

ny6fqffe  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(91)

在这个Python 3.11代码片段中:

import numpy as np

state = np.arange(48, dtype='u1').reshape((2, 8, 3))
pixels = [3, 4, 5]
colors = [[42, 43, 44], [0, 1, 2]]
state[0, pixels] = colors[0]  # line 1
state[1, pixels] = colors[1]  # line 2
# state[:, pixels, :] = colors  # error

我想把line 1line 2替换成一个单行的Numpy魔法。最后一行无法编译。

cotxawn7

cotxawn71#

colors需要与state具有相同的维数

state = np.arange(48, dtype='u1').reshape((2, 8, 3))
pixels = [3, 4, 5]
colors = np.array([[42, 43, 44], [0, 1, 2]])
state[:,pixels,:] = np.expand_dims(colors, axis=1)
print(state)

输出

[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [42 43 44]
  [42 43 44]
  [42 43 44]
  [18 19 20]
  [21 22 23]]

 [[24 25 26]
  [27 28 29]
  [30 31 32]
  [ 0  1  2]
  [ 0  1  2]
  [ 0  1  2]
  [42 43 44]
  [45 46 47]]]

相关问题