使用类似形状的函数获取一维numpy.array的"1

8 投票
2 回答
9603 浏览
提问于 2025-04-18 00:44

在一个函数里,我给了一个Numpy数组:这个数组可以是多维的,也可以是一维的。

当我给一个多维数组时:

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

然后

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这样的判断测试。

谢谢!

2 个回答

0

嗯,访问列表元素时没有办法设置默认值,不过你可以试试这个方法:

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

希望这对你有帮助。

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
>>> a
array([1, 2, 3, 4])
>>> a.shape += (1,)
>>> a
array([[1],
       [2],
       [3],
       [4]])
>>> a.shape
(4, 1)
>>> a.ndim
2

如果你想要一个列向量,可以使用 .reshape 这个方法。实际上,.shape 是一个可以设置的属性,所以 numpy 也允许你这样做:

撰写回答