我正在尝试使用
从Numpy数组中提取一行t = T[153,:]
但是我发现T
的大小是(17576,31),t
的大小是(31,) - 维度不匹配!
我需要t
来获得尺寸(,31)或(1,31),以便我可以将它输入到我的函数中。我尝试过转置,但那不起作用。
任何人都可以帮我解决一个简单的问题吗?
非常感谢
答案 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)