给定两个指定的维度N1
和N2
以及一些边界ymin, ymax, xmin, xmax
,我想构建一个N1xN2
矩阵(无论是numpy数组还是普通的python列表) )除了在其边界指定的矩形子区域外,它在任何地方都是零。
更确切地说,我正在寻找如何实现函数rectangular_sparse_matrix(N1, N2, ymin, ymax, xmin, xmax)
,例如,
N1 = N2 = 5
rectangular_sparse_matrix(N1, N2, 0, 2, 1, 2)
返回
[[ 0 1 1 0 0]
[ 0 1 1 0 0]
[ 0 1 1 0 0]
[ 0 0 0 0 0]
[ 0 0 0 0 0]]
天真的方式是循环遍历元素,比如
def rectangular_sparse_matrix(N1, N2, ymin, ymax, xmin, xmax):
matrix = np.zeros([N1, N2])
for row in range(N1):
for col in range(N2):
if ymin <= row <= ymax and xmin <= col <= xmax:
matrix[row, col] = 1
return matrix
完成这项工作。 然而,如果有一些更有效/更容易的方法来实现这样的事情,我可能会徘徊,可能使用一些模糊的(对我来说)numpy功能或其他东西。
答案 0 :(得分:2)
def rectangular_sparse_matrix(N1, N2, ymin, ymax, xmin, xmax):
m = np.zeros([N1, N2])
m[ymin:ymax+1, xmin:xmax+1] = 1
return m
在函数切片中使用numpy数组。