3
我正在尝试优化一些Python代码。它处理两个相同大小的二维数组(它们的大小可以是任意的)。第一个数组充满了任意的布尔值,第二个充满了0和1之间的半随机数。优化数组与Python之间的布尔比较
我想要做的是根据修饰符数组中的值更改二进制值。这里有一个代码段工作得很好,并封装了两个内什么,我试图做的for循环:
import numpy as np
xdim = 3
ydim = 4
binaries = np.greater(np.random.rand(xdim,ydim), 0.5)
modifier = np.random.rand(xdim,ydim)
for i in range(binaries.shape[0]):
for j in range(binaries.shape[1]):
if np.greater(modifier[i,j], 0.2):
binaries[i,j] = False
我的问题:是否有更好(或者更恰当)的方式来做到这一点?我宁愿使用片段而不是嵌套for循环,但比较和布尔逻辑使我认为这可能是最好的方式。
不错。谢谢。我不知道&=操作符。 – Nick 2013-03-16 00:50:59
+1我认为将'False'分配给符合条件的项目会更快,即'binaries [modifier> 0.2] = False',而不是'&' - 这两个数组,但您的答案快大约10倍。如果你执行'binaries&= modifier <= 0.2',它当然会更快一些。 – Jaime 2013-03-16 01:01:21
聪明答案+1 – 2013-03-16 01:08:43