如何获取ndarray的x和y维度-Numpy/Python

10
我想知道如何单独获取ndarray的x和y维度。我知道可以使用 ndarray.shape 来获取表示维度的元组,但怎样才能将其分离为x和y信息呢?
提前致谢。
3个回答

20
您可以使用元组解包。
y, x = a.shape

谢谢。谷歌搜索了一下,什么都没找到!:D - pceccon
1
.shape 是 numpy 数组的一个属性,而不是方法。 - wflynny
请注意:问题本身提到了带括号的.shape(),因此答案中没有括号看起来更像是粗心而不是逻辑错误。 - ffriend
1
这是我的错误。这是一个属性,而不是方法。另外,我把坐标搞反了。 - bitsplit

14
height, width = a.shape

请注意,ndarray 具有矩阵坐标 (i,j),与图像坐标 (x,y) 相反。也就是说:

i, j = y, x  # and not x, y

另外,Python元组支持索引,您可以像这样访问不同的维度:

dims = a.shape
height = dims[0]
width = dims[1]

4

ndarray.shape() 这样写会出现 TypeError: 'tuple' object is not callable. 错误,因为它不是一个函数而是一个值。

正确的做法是直接解构元组 .shape,不需要加上 ()。例如:

>> import numpy
>> ndarray = numpy.ndarray((20, 21))
>> ndarray.shape
(20, 21)
>> x, y = ndarray.shape
>> x
20
>> y
21

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.shape.html


在你的第二段中,你可能是想说.shape而不是.size.size包含元素的总数。 - ffriend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接