我已经阅读了大部分如何将布尔数组转换为整数数组,但是我仍然不知道如何(最有效地)将numpy
布尔数组转换为具有不同值的整数数组。例如,我有:
>>> k=np.array([True, False, False, True, False])
>>> print k
[ True False False True False]
我将这转换为数组,其中True为2,False为5。
当然,我也可以设置一个线性方程:
>>> print 5-k*3
[2 5 5 2 5]
…虽然使用向量化方式,但仍然不必要地使用了加(减)和乘法;此外,如果我想要相反的值(True 的值为5,False 的值为2),我基本上必须使用(并重新计算)不同的方程式:
>>> print 2+k*3
[5 2 2 5 2]
...这对我来说有点阅读障碍。
本质上,这只是一个选择/映射操作 - 但我希望在 numpy
领域中完成。 我该如何做到这一点?
np.add
的东西(但没有提到,因为我想将问题简化为“基本要素”),这看起来像是能解决问题的方法!再次感谢 - 干杯! - sdaaua = np.array([1,3,3,4,5,6]); np.add(a[:-1]+0, 2, a[1:]); print a
-- numpy 将会使用a[:-1]
中的“旧值”(在a[:-1]+0
中),并且不会“递归”到“新的”前一个位置,因此,np.where
(可能还有其他函数)将具有相同的效果。 - sdaau