至尊宝的传说
这可能是最容易做到的x[None, 10, :]或等效的方法(但更具可读性)x[np.newaxis, 10, :]。至于为什么不是默认值,我个人发现,不断拥有单例维数的数组会非常烦人。我猜想那些麻木的开发者也有同样的感觉。而且,numpy可以很好地处理广播数组,因此通常没有理由保留切片所来自的数组的尺寸。如果您这样做了,那么类似:a = np.zeros((100,100,10))b = np.zeros(100,10)a[0,:,:] = b要么行不通,要么实施起来更加困难。(或者至少这是我对切片时删除维度信息背后的numpy开发人员的猜测)
收到一只叮咚
这是我更喜欢的替代方法。而不是使用单个数字编制索引,而是使用范围进行索引。即使用X[10:11,:]。(请注意,其中10:11不包括11)。import numpy as npX = np.zeros((100,10))X.shape # >> (100, 10)xslice = X[10:11,:]xslice.shape # >> (1,10)这也使得使用更多尺寸也很容易理解,而无需None费力地弄清楚要使用哪个索引的轴。同样,无需为阵列大小做额外的记账工作,只需i:i+1为i您将在常规索引中使用的任何记账工作做好。b = np.ones((2, 3, 4))b.shape # >> (2, 3, 4)b[1:2,:,:].shape # >> (1, 3, 4)b[:, 2:3, :].shape . # >> (2, 1, 4)