如何填充numpy数组的“部分对角轴”
答
方法#1您可以创建一个对角面具与np.eye
,然后使用布尔索引分配 -
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重塑为2D
然后分配到行中 -
n = A.shape[0]
A.reshape(-1,A.shape[-1])[np.arange(n)*(n+1)] = 1.0
它确实有效。但如何理解呢?该文档说“掩码”索引数组返回数据的副本,而不是视图。 https://docs.scipy.org/doc/numpy/user/basics.indexing.html –
@ChongWang我们不是用掩码提取数据,而是分配数据。所以,这里没问题。 – Divakar
任何文档详细说明分配行为? –