使用类似形状的函数获取一维numpy.array的"1
在一个函数里,我给了一个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 也允许你这样做: