假设我有两个数组
>>> import numpy as np
>>> a = np.random.randint(0, 10, size=(5, 4))
>>> a
array([[1, 6, 7, 4],
[2, 7, 4, 2],
[9, 3, 6, 4],
[9, 6, 8, 2],
[7, 2, 9, 5]])
>>> b = np.random.randint(0, 10, size=(5, 4))
>>> b
array([[ 5., 8., 6., 5.],
[ 1., 8., 4., 8.],
[ 1., 4., 6., 3.],
[ 4., 8., 6., 4.],
[ 8., 7., 7., 5.]], dtype=float32)
现在我有一种情况需要比较每个数组的元素并用已知值替换。例如,我的条件是
if a == 0 then replace with 0 (or) if b == 0 then replace with 0
if a > 4 and < 11 then replace with 1 (or) if b > 1 and < 3 then replace with 1
if a > 10 and < 18 then replace with 2 (or) if b > 2 and < 5 then replace with 2
.
.
.
and finally
if a > 40 replace with 9 (or) if b > 9 then replace with 9.
这些被替换的值可以存储在一个新的arrary中,我需要将它用于其他功能。
最简单的元素明智比较形式如a[ a > 2 ] = 1
有效。但我不知道用同样的方法进行多次比较(多次)。
我确信在numpy中存在一种我无法找到的简单方法。任何帮助表示赞赏。 如果
答案 0 :(得分:0)
np.digitize
应该做你想做的事。第一个参数是您要替换的值,第二个参数是阈值。
a_replace = np.digitize(a, [0, 4, 10, ..., 40], right=True)
b_replace = np.digitize(b, [0, 1, 2, ..., 9], right=True)