Python Numpy:从数组

时间:2017-07-31 14:56:33

标签: python numpy

我正在尝试使用

从Numpy数组中提取一行
t = T[153,:]

但是我发现T的大小是(17576,31),t的大小是(31,) - 维度不匹配!

我需要t来获得尺寸(,31)或(1,31),以便我可以将它输入到我的函数中。我尝试过转置,但那不起作用。

任何人都可以帮我解决一个简单的问题吗?

非常感谢

2 个答案:

答案 0 :(得分:3)

您可以使用切片表示法提取行:

t = T[153:154,:]    # will extract row 153 as a 2d array

实施例

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

T[1,:]
# array([5, 6, 7, 8])

T[1,:].shape
# (4,)

T[1:2,:]
# array([[5, 6, 7, 8]])

T[1:2,:].shape
# (1, 4)

答案 1 :(得分:2)

虽然这看起来令人惊讶,但它实际上是100%惯用的。想一想在Python中索引列表时得到的结果,以及切片列表时得到的结果:

>>> l = list(range(10))
>>> l[4]
4
>>> l[4:5]
[4]

当然,我们在普通的一维数组中看到了相同的东西:

>>> a = numpy.arange(10)
>>> a[4]
4
>>> a[4:5]
array([4])

因此我们在二维数组中看到相同的东西也是理所当然的:

>>> a = numpy.arange(25).reshape(5, 5)
>>> a[4]
array([20, 21, 22, 23, 24])
>>> a[4:5]
array([[20, 21, 22, 23, 24]])

形状反映了这种差异:

>>> a[4].shape
(5,)
>>> a[4:5].shape
(1, 5)