【发布时间】:2016-10-18 00:38:52
【问题描述】:
我真的无法理解 Numpy 中掩码的工作原理。
我创建了一个类似的面具
import numpy
def make_mask(center_x,center_y,len_x,len_y):
x,y = numpy.ogrid[:len_x, :len_y]
mask = (center_x-x)**2 + (center_y-y)**2
return mask
然后我尝试使用它
>>>a = numpy.ones((10,10))
>>>mask = make_mask(2,2,2,2,2)
>>>a[mask] = 0
>>>a
array([[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0]])
我期待的是这样的
>>>a
array([[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[1,1,0,0,1,1,1,1],
[1,1,0,0,1,1,1,1],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1]])
我尝试了几个不同版本的函数。我只是无法获得所需的行为。我究竟做错了什么。我真的不明白 2D 矩阵如何索引 2D 矩阵。
【问题讨论】:
-
你能发布你所有的代码吗?目前,您的
make_mask函数未定义center_x或center_y并且无法按提供的方式工作。除非你的意思是center_x和center_y是index_x和index_y。无论哪种方式,它都无法按照您提供的方式工作。 -
另外,
make_mask调用中还有第五个参数。 -
但是,我认为您正在寻找的是切片符号:stackoverflow.com/questions/509211/…。我会检查这个链接,我相信这会有所帮助。
-
编辑了代码。这就是我的全部代码。这是我在 RPEL 中准备的东西。很抱歉错过了命名变量。这是一个诚实的错误。我也理解切片符号。问题是我不明白 2D 矩阵如何索引 2D 矩阵。您必须了解在感觉像魔术的事情上寻求帮助真的很困难。举个例子:stackoverflow.com/questions/8647024/…同样的问题二维数组索引二维数组是什么?
标签: python python-2.7 numpy