actualrgn
是3145728个元素的1D numpy.ndarray
。 actualrgnexpand
是尺寸为12 x 3145728的2D numpy.ndarray
。
for j in range(len(actualrgn)):
for i in reversed(range(12)):
if actualrgn[j] >= 2**i:
actualrgnexpand[i][j] = 1
actualrgn[j] -= 2**i
是否可以对上述内容进行矢量化,以便在actualrgn
的元素上丢失外部循环?我尝试使用numpy.vectorize
,但似乎很难将标量和向量的函数(使用数学等价物)转换为向量和矩阵的函数。我也试过找到'内置'ufunc
来简化上述内容但没有成功。
答案 0 :(得分:2)
矢量化' if'声明,是使用布尔索引掩码。
for i in reversed(range(12)):
I = actualrgn >= 2**i
actualrgnexpand[i,I] = 1
actualrgn[I] -= 2**i
actualrgn[I]
是应修改的数字子集。这些作业的右侧必须是正确的尺寸。在这种情况下,标量符合所有条件。