这个包含1D和2D numpy数组的Python代码可以向量化吗?

2024-10-03 17:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

actualrgn是3145728个元素的1Dnumpy.ndarrayactualrgnexpand是尺寸为12 x 3145728的二维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来简化上面的内容,但没有成功。你知道吗


Tags: 函数innumpy元素内容forlenif
1条回答
网友
1楼 · 发布于 2024-10-03 17:14:47

将“if”语句矢量化的常用方法是使用布尔索引掩码。你知道吗

for i in reversed(range(12)):
    I = actualrgn >= 2**i
    actualrgnexpand[i,I] = 1
    actualrgn[I] -= 2**i

actualrgn[I]是应该修改的数字的子集。这些作业的右边必须有合适的尺寸。本例中的标量适用于所有情况。你知道吗

相关问题 更多 >