【问题标题】:Changing values of a numpy array using another array as a reference without loops使用另一个数组作为参考更改 numpy 数组的值而不使用循环
【发布时间】:2020-10-27 14:46:54
【问题描述】:

假设我有这个数组

x = np.array([0,0,0
              1,1,1
              2,2,2])

y = np.array([4,5,6])

我想成为x

[4,4,4
 5,5,5
 6,6,6]

意思是,x 中的i 变为y[i]。我觉得花哨的索引会对我有所帮助,但我是 numpy 的新手并且正在苦苦挣扎。


输入;

[[  0   0   0 ... 255 255 255]
 [  0   0   0 ... 255 255 255]
 [  0   0   0 ... 255 255 255]
 ...
 [  0   0   0 ... 255 255 255]
 [  0   0   0 ... 255 255 255]
 [  0   0   0 ... 255 255 255]]

和我想要的输出,给定长度为 256 的 yy = np.array([5,6,7.......261])

[[  5    ... 261]
 [  5    ... 261]
 [  5    ... 261]
 ...
 [  5    ... 261]
 [  5    ... 261]
 [  5    ... 261]]

【问题讨论】:

  • 请提供一个小的工作示例(输入和预期输出)
  • @RiccardoBucco 完成,我认为这涵盖了所有内容

标签: python arrays numpy numpy-ndarray


【解决方案1】:

如果你有(我认为你想要的):

x = np.array([[0,0,0],
              [1,1,1],
              [2,2,2]])

y = np.array([4,5,6])

然后:

y[x]

Out: 
array([[4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])

那是。 . .索引的工作原理:)

【讨论】:

  • 哇,我觉得自己很笨。这是完美的!
【解决方案2】:

你可以使用np.repeat:

>>> np.repeat(y, x.size / y.size)
array([4, 4, 4, 5, 5, 5, 6, 6, 6])

【讨论】:

  • 感谢您的回复。这也适用于二维数组吗?
  • @Omri.B 请用所需的详细信息更新您的问题,我会处理它
  • 已编辑。试图简化它,但走得太远了。
猜你喜欢
  • 2020-07-12
  • 2020-11-13
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2019-03-29
  • 1970-01-01
相关资源
最近更新 更多