我的代码:
#!/usr/bin/python
import numpy as np
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4) + 0.8
print (data)
mask2= ((names != 'Joe') == 7.0)
d2 = data[mask2]
print (d2)
d3 = data[names != 'Joe'] = 7.0
print (d3)
实际上,我的意图是使用蒙版和其他表达来获得相同的解决方案。 我用Patric的帮助解决了这个问题
mask2= (names != 'Joe')
data[mask2] = 7.0
print (data)
然后我有:
[[ 7. 7. 7. 7. ]
[-0.73168514 2.26996071 -0.24892468 1.31421193]
[ 7. 7. 7. 7. ]
[ 7. 7. 7. 7. ]
[ 7. 7. 7. 7. ]
[ 0.74771766 2.44888399 0.62641731 -0.12963696]
[ 0.08604169 2.25468039 2.1960925 0.88218726]]
答案 0 :(得分:2)
mask2 =((names!='Joe')== 7.0)
为什么我的面具在Python中失败了?
此掩码没有意义,使用该表达式,您将names != 'Joe'
的结果与7.0
进行比较
In [13]: names != 'Joe'
Out[13]: array([ True, False, True, True, True, False, False], dtype=bool)
所以这很自然地会让你到处都是False
:
In [14]: ((names != 'Joe') == 7.0)
Out[14]: array([False, False, False, False, False, False, False], dtype=bool)
你的另一个面具是有意义的,这种形式的东西:
x[mask] = value
答案 1 :(得分:1)
不确定理解,但如果你想在除Joe之外的所有行中使用7.0,那么你想要的可能是:
data[names != 'Joe'] = 7.0
print data