定义仅在矩形子区域中具有非零元素的二维矩阵
Define 2D matrix with non-zero elements only in a rectangular subregion
给定两个指定维度 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)
returns
[[ 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
哪个做的工作。
但是,我在想是否还有更多 efficient/easier 方法来实现这样的目标,也许使用一些晦涩的(对我而言)numpy 功能或其他东西。
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数组切片
给定两个指定维度 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)
returns
[[ 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
哪个做的工作。 但是,我在想是否还有更多 efficient/easier 方法来实现这样的目标,也许使用一些晦涩的(对我而言)numpy 功能或其他东西。
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数组切片