我有一个三个维度的 numpy 数组 A
。我想要拥有
A[i, i, :] = 1.0
对于每个i
。
我怎样才能在 numpy 中优雅地做到这一点?是否可以避免所有 for
循环?
最佳答案
方法 #1 您可以使用 np.eye
创建对角蒙版。然后使用 bool 索引来分配 -
mask = np.eye(A.shape[0], dtype=bool)
A[mask] = 1.0
方法 #2 使用基于整数的索引 -
r = np.arange(A.shape[0])
A[r,r] = 1.0
方法 #3 reshape 为 2D
,然后分配到行中 -
n = A.shape[0]
A.reshape(-1,A.shape[-1])[np.arange(n)*(n+1)] = 1.0
关于python - 如何填充 numpy 数组的 "partial diagonal axis",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43047433/