5

在很多情况下,二维数组中的切片操作会生成一维数组作为输出,例如:

a = np.random.random((3,3))
# array([[ 0.4986962 ,  0.65777899,  0.16798398],
#        [ 0.02767355,  0.49157946,  0.03178513],
#        [ 0.60765513,  0.65030948,  0.14786596]])
a[0,:]
# array([ 0.4986962 ,  0.65777899,  0.16798398])

有一些解决方法,例如:

a[0:1,:]
# or
a[0,:][np.newaxis,:]
# array([[ 0.4986962 ,  0.65777899,  0.16798398]])

是否有任何numpy内置函数可以将输入数组转换为给定维数?喜欢:

np.minndim(a, ndim=2)
4

2 回答 2

8

np.array(array, copy=False, subok=True, ndmin=N)np.atleast_1d等实际使用reshape方法,大概是为了更好的支持一些奇怪的子类比如matrix。

对于二维中的大多数切片操作,您实际上可以使用矩阵类,尽管我强烈建议将使用限制在代码中大量使用其功能的那几个点。

于 2013-08-13T11:09:56.793 回答
4

您可以使用np.atleast_1d和。不幸的是,我认为目前没有 N 维版本。np.atleast_2dnp.atleast_3d

于 2013-08-13T11:00:34.633 回答