我有一个 numpy 数组,其中每一行最多有 1 个非零元素。我需要有效地构建一个矩阵,其中元素 (i,j) 与该行中的非零元素之间存在水平距离。
对于 istante 假设元素 (10,6) 为 1,在矩阵中我需要构建元素 (10,6) 为 0,元素 (10,5) 为 1 元素 (10,7) 为 -1 等.
我需要这个算法是高效的。我想避免 for 循环并使用 np.roll 之类的可广播函数
最佳答案
如果每一行都有一个,你可以用一个简单的广播减法来完成:
np.arange(arr.shape[0]) - arr.argmax(1)[:, None]
关于python - 距行中第一个非空元素的距离的 numpy 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67203659/