with:
import numpy as np
array = get_array()
I need to do the following thing:
for i in range(len(array)):
if random.un
I suggest using
array ^= numpy.random.rand(len(array)) < prob
This is probably the most efficient way of getting the desired result. It will modify the array in place, using "xor" to invert the entries which the random condition evaluates to True
for.
Why can I take the value of array but not its negation?
You can't take the truth value of the array either:
>>> bool(array)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
The not
operator implicitly tries to convert its operand to bool
, and then returns the opposite truth value. It is not possible to overload not
to perform any other behaviour. To negate a NumPy array of bool
s, you can use
~array
or
numpy.logical_not(array)
or
numpy.invert(array)
though.