python - 在 Numpy 数组的列中进行条件替换

标签 python arrays numpy replace where-clause

我有一个 numpy 数组,例如:

theData= [[0, 1, 1, 1],[0, 1, 3, 1],[3, 4, 1, 3],[0, 1, 2, 0],[2, 1, 0, 0]]

如何用 -1 替换第一列中的所有零

theData[theData==0] = -1 很容易替换整个数组中的所有零,所以我认为这样的方法可行

theData[theData[:,0] == 0] = -1
theData[:,0 == 0] = -1

但是对于第一列值为零的任何行,这些都会将行中的所有值更改为 -1。这不是我的目标,我想将替换限制在第一列(或其他列)。

这显然可以通过循环来完成。也可以通过将第一列提取为一维数组,在其中进行替换,然后将其转置复制到原始第一列来完成。但我怀疑有一种更快、更 Pythonic 的方法可以做到这一点。也许使用 np.where,但我想不通。

最佳答案

只要不使用它构建不同的对象,就可以直接对该列建立索引。检查以下示例:

theData= np.array([[0, 1, 1, 1],[0, 1, 3, 1],[3, 4, 1, 3],[0, 1, 2, 0],[2, 1, 0, 0]])
print(theData)
theData[:,0][theData[:,0] == 0] = -1
print(theData)

结果是这样的:

[[0 1 1 1]
 [0 1 3 1]
 [3 4 1 3]
 [0 1 2 0]
 [2 1 0 0]]
[[-1  1  1  1]
 [-1  1  3  1]
 [ 3  4  1  3]
 [-1  1  2  0]
 [ 2  1  0  0]]

关于python - 在 Numpy 数组的列中进行条件替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49751455/

相关文章:

python - 使用自定义占位符的高级 Python 字符串格式?

c - 向 HashTable 插入时出错

arrays - Powershell 一起添加值

python - ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index) 抛出 IndexError : Target 42 is out of bounds

python - 标记二维数组中的非零邻居值

python - Linux xdotool 符号

python - assertRaisesRegexp 确实可以在 Python2 中使用 unicode

python - 无法模拟从另一个类继承的类(创建/使用单例对象)

javascript - 如何检查数组中的单词是否存在于给定字符串中

python - 在二维数组中创建规则网格的 Numpy 例程