没有维度的Python切片

时间:2016-02-04 13:41:39

标签: python arrays

为什么切片一行或一列会产生“无量纲数组”?例如:

import numpy as np
arr = np.zeros((10,10))
print arr.shape
# (10, 10)

但是当我只想要一列或一行时,我得到了

print arr[:,0].shape
# (10,)
print arr[0,:].shape
# (10,)

而不是

print arr[:,0].shape
# (10, 1)
print arr[0,:].shape
# (1, 10)

1 个答案:

答案 0 :(得分:1)

例如,您从0列和0行获得np.arrays,其中numpy.array为1维。你可以用这样的切片做一个小技巧:

In [103]: arr[:1,:].shape
Out[103]: (1, 10)

In [104]: arr[:,:1].shape
Out[104]: (10, 1)  

修改

来自docs

  

整数i返回与i:i+1 相同的值,但返回对象的维度减少1.特别是,带p的选择元组-th元素一个整数(以及所有其他条目:)返回维度为N-1的相应子数组。如果N = 1,则返回的对象是数组标量。 Scalars中解释了这些对象。