考虑以下numpy
代码:numpy的:布尔索引和存储器使用
A[start:end] = B[mask]
这里:
A
和B
是2D阵列具有相同的列数;start
和end
是标量;mask
是一维布尔数组;(end - start) == sum(mask)
。
在原理上,上面的操作,可以使用O(1)
临时存储通过复制的B
元件直接进入A
进行。
这是实际发生的实际情况,还是numpy
构建了一个临时数组B[mask]
?如果是后者,是否有办法通过重写语句来避免这种情况?
+1引入Cython。它擅长于这种循环。 – 2011-05-11 09:58:05