我有一个2D numpy数组.有没有办法在其上创建包含第一k行和所有列的视图?
关键是要避免复制基础数据(数组太大,以至于无法制作部分副本.)
有:
import numpy as np
array = get_array()
Run Code Online (Sandbox Code Playgroud)
我需要做以下事情:
for i in range(len(array)):
if random.uniform(0, 1) < prob:
array[i] = not array[i]
Run Code Online (Sandbox Code Playgroud)
数组是一个numpy.array.
我希望我能做类似的事情:
array = np.where(np.random.rand(len(array)) < prob, not array, array)
Run Code Online (Sandbox Code Playgroud)
但我得到以下结果(指'not array'):
具有多个元素的数组的真值是不明确的.使用a.any()或a.all()
为什么我可以获取数组的值而不是它的否定?
目前我解决了:
array = np.where(np.random.rand(len(array)) < prob, - array + 1, array)
Run Code Online (Sandbox Code Playgroud)
但它对我来说看起来很笨拙.
谢谢您的帮助
ps:我不在乎语句是否修改数组.我只需要操作的结果.
另一个问题:我想做这个改变有两个原因:可读性和效率.它有真正的性能提升吗?再次感谢你