【问题标题】:Substitute row in Numpy if a condition is met如果满足条件,则在 Numpy 中替换行
【发布时间】:2021-12-22 14:05:38
【问题描述】:

我在 NumPy 中有一个矩阵:

[[10, 10],
 [11, 10],
 [12, 10],
 [13, 10],
 [14, 10]]

我的目标是在满足左侧元素的特定条件时替换一行。

例如:

我有价值观:z= 13, x=1, y=0。我想要类似的东西:

如果左侧元素之一等于 z,则将该行替换为 [x y]

到目前为止,我写的是这样的:

import numpy as np
values = np.array([[10, 10],
     [11, 10],
     [12, 10],
     [13, 10],
     [14, 10]])
z = 13
x = 1
y = 0
values = np.where(values == [z, ], np.array([x, y]), values)

代码可以很好地替换左侧元素(x 已更新),但 y 出于某种原因保持不变或以某种方式获取另一行的值。

有谁知道我应该怎么做,或者是否有其他方法?

【问题讨论】:

  • 什么是min_values?我猜你的意思是values?
  • @JoshuaF 编辑,我的错

标签: python arrays numpy syntax


【解决方案1】:

尝试values[values[:, 0] == z] = [x, y] - 即,将第一个条目为z 的行设置为[x, y]

import numpy as np

values = np.array([[10, 10],
     [11, 10],
     [12, 10],
     [13, 10],
     [14, 10]])
z = 13
x = 1
y = 0

values[values[:, 0] == z] = [x, y]

print(values)

【讨论】:

  • 返回[[10 10] [11 10] [12 10] [0 0] [ 14 10]]
  • 编辑包含完整代码,输出[[10 10] [11 10] [12 10] [ 1 0] [14 10]]
  • 谢谢你,这似乎有效!由于浮点整数转换,它正在将我的值转换为[0,0]。现在工作
  • 很高兴听到这个消息!
猜你喜欢
  • 2013-11-15
  • 2018-07-13
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2018-10-23
相关资源
最近更新 更多