【发布时间】:2020-01-22 16:48:30
【问题描述】:
我有一个这样的数组,需要用 2 替换每 1,用 4 替换每 3,用 1 替换每 4。有没有办法只用 np 而不是循环来做到这一点?
import numpy as np
np.random.seed(2)
arr=np.random.randint(1,5,(3,3),int)
arr
array([[1, 4, 2],
[1, 3, 4],
[3, 4, 1]])
如果我按顺序使用数组掩码,它不会给出预期的结果:
array([[2, 1, 2],
[2, 4, 1],
[4, 1, 2]])
它基于条件逻辑而不是数学公式
【问题讨论】:
-
我会为每个替换使用单独的掩码。您应该注意作业的顺序。如果您仍需要帮助,请出示您尝试过的代码。
-
更好的是,从原始数组创建掩码,而不是在每次修改之后。
标签: python numpy if-statement numpy-ndarray