我正在尝试将numpy数组中的单个列设置为其他两个列的条件(逐元素)。我但似乎不太正确,我尝试了np.where
,np.which
和np.all
。
我知道我可以使用for循环来做到这一点,但是速度在此任务中很重要,并且希望使用内置的数组函数。
我想将predicted_probabilities[:,1]
设置为true(如果已经设置为true),但是如果predicted_probabilities[:,0]
和predicted_probabilities[:,2]
都设置为false,则设置为true
例如:
predicted_probabilities = np.asarray([[True, False, False],
[False, True, False],
[False, False, True],
[False, False, False]])
我希望我的predicted_probabilities
最终成为:
[[ True False False]
[False True False]
[False False True]
[False True False]
我尝试过:
predicted_probabilities[:,1] = (predicted_probabilities[:,0] & predicted_probabilities[:,2])
我也尝试过
predicted_probabilities[:,1] = np.where(predicted[:,0]==False & predicted[:,2] == False)
非常感谢您的帮助!
答案 0 :(得分:0)
使用np.logical_and
和np.logical_or
可能会有帮助。
import numpy as np
predicted = np.asarray([[True, False, False],
[False, True, False],
[False, False, True],
[False, False, False]])
cond = np.logical_and(predicted[:, 0] == False, predicted[:, 2] == False)
predicted[:, 1] = np.logical_or(predicted[:, 1], cond)
print(predicted)
"""
Prints:
[[ True False False]
[False True False]
[False False True]
[False True False]]
"""