使用类似于shape的函数获取一维numpy.array的值为“1”。

8

在一个函数中,我给出了一个Numpy数组:它可以是多维的,也可以是一维的

所以当我给出一个多维数组时:

np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape
>>> (3, 4)

and

np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape[1]
>>> 4

好的。 但是当我询问形状时
np.array([1,2,3,4]).shape
>>> (4,)

并且

np.array([1,2,3,4]).shape[1]
>>> IndexError: tuple index out of range

哎呀,这个元组只包含一个元素...但我想用 1 来表示它是一个一维数组。 有没有一种简单的方法或函数可以做到这一点,而不需要像使用 ndim 这样的鉴别测试?
谢谢!

1
可能是重复的问题:检查numpy数组是否为多维数组 - Ashwini Chaudhary
你的数组显然是一维的,询问其它维度是没有意义的。你需要一个矩阵,例如 np.array([[1,2,3,4]]).shape (1, 4)。 - njzk2
(或 np.array([[1],[2],[3],[4]]).shape - njzk2
2个回答

10
>>> a
array([1, 2, 3, 4])
>>> a.ndim
1
>>> b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> b.ndim
2

如果你想要一个列向量,你可以使用.reshape方法 - 实际上,.shape是一个可设置的属性,所以numpy也让你这么做:
>>> a
array([1, 2, 3, 4])
>>> a.shape += (1,)
>>> a
array([[1],
       [2],
       [3],
       [4]])
>>> a.shape
(4, 1)
>>> a.ndim
2

这个重置操作是否允许数组仍然保持连续性? - Shivendra

0

嗯,没有办法为访问列表元素设置默认值,但你可以尝试以下方法:

>>> shape = np.array([1,2,3,4]).shape
>>> shape[1] if shape[1:] else 1
1

HTH.


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