【发布时间】:2011-02-14 12:16:27
【问题描述】:
与:
import numpy as np
array = get_array()
我需要做以下事情:
for i in range(len(array)):
if random.uniform(0, 1) < prob:
array[i] = not array[i]
数组是一个 numpy.array。
我希望我可以做类似的事情:
array = np.where(np.random.rand(len(array)) < prob, not array, array)
但我得到以下结果(指的是'非数组'):
具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()
为什么我可以取数组的值,但不能取反?
目前我解决了:
array = np.where(np.random.rand(len(array)) < prob, - array + 1, array)
但我觉得它真的很笨拙。
感谢您的帮助
ps:我不在乎语句是否修改了数组。我只需要操作的结果。
只是另一个问题:我想做这个改变有两个原因:可读性和效率。它有真正的性能改进吗?再次感谢您
【问题讨论】: