python - 如何填充 numpy 数组的 "partial diagonal axis"

标签 python numpy

我有一个三个维度的 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/

相关文章:

Python:为简单的 OLS 循环一个变量

python - Tkinter 中的七段显示

python - 将 numpy 数组的实部和虚部元素四舍五入到零或远离零

Python 命名约定——namedtuples

python - 检查多维 numpy 数组中两个轴的相等性

python - numpy 中的向量对排序

python - 沿指定轴的两个 numpy 数组的外部总和

Python 导出到 CSV

Python:将单元格中的值除以每列中的最大值

python - 将数组中的数字替换为字母