python - 距行中第一个非空元素的距离的 numpy 矩阵

标签 python numpy broadcast

我有一个 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/

相关文章:

python - 如何让这个按钮更新余额?

python - Pandas 在线绘制条形图

python - 查找所有点对之间的欧氏距离

c - 来自未知来源的 MPI 异步广播

android - 广播怎么可能是 "malicious"?

python - 获取要在 Qt 小部件中显示的子进程的标准输出

python - 导入同名方法

python - 如何在 Pandas 中创建日期时间索引

pandas - 计算可变窗口大小的滚动最大值,并根据该窗口大小调整位置

linux - 如何获取所需广播地址:port combination?的发送者IP