2024-05-16 11:03:53 发布
网友
假设我有一个numpy数组。我想为不在子矩阵掩码中的索引设置0。你知道吗
import numpy as np mtrx = np.arange(25).reshape(5,5) mask = mtrx[1:4, 1:4]
当然这是错误的:
mtrx[~mask] = 0
我想要的结果是:
[[ 0 0 0 0 0] [ 0 6 7 8 0] [ 0 11 12 13 0] [ 0 16 17 18 0] [ 0 0 0 0 0]]
可以将矩阵乘以遮罩,例如:
import numpy as np mtrx = np.arange(25).reshape(5,5) mask = np.zeros((5,5)) mask[1:4,1:4] = 1 mask >>>array([[0., 0., 0., 0., 0.], [0., 1., 1., 1., 0.], [0., 1., 1., 1., 0.], [0., 1., 1., 1., 0.], [0., 0., 0., 0., 0.]]) mtrx * mask >>> array([[ 0., 0., 0., 0., 0.], [ 0., 6., 7., 8., 0.], [ 0., 11., 12., 13., 0.], [ 0., 16., 17., 18., 0.], [ 0., 0., 0., 0., 0.]])
一个选项是将行和列设置为零。你知道吗
import numpy as np mtrx = np.arange(25).reshape(5,5) mtrx[:1] = 0 mtrx[-1:] = 0 mtrx[:,:1] = 0 mtrx[:, -1:] = 0 print(mtrx) #output #[[ 0 0 0 0 0] # [ 0 6 7 8 0] # [ 0 11 12 13 0] # [ 0 16 17 18 0] # [ 0 0 0 0 0]]
一种方法是索引一个由零组成的数组,并从索引的原始数组中添加值:
s = np.s_[1:4,1:4] out = np.zeros_like(mtrx) out[s] = mtrx[s]
print(out) array([[ 0., 0., 0., 0., 0.], [ 0., 6., 7., 8., 0.], [ 0., 11., 12., 13., 0.], [ 0., 16., 17., 18., 0.], [ 0., 0., 0., 0., 0.]])
可以将矩阵乘以遮罩,例如:
一个选项是将行和列设置为零。你知道吗
一种方法是索引一个由零组成的数组,并从索引的原始数组中添加值:
相关问题 更多 >
编程相关推荐