2017-10-20 32 views
1

在numpy的的documents字符串在numpy.r_中的含义是什么?

>>> np.r_['0,2,0', [1,2,3], [4,5,6]] 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

什么第三个数字字符串 '0,2,0' 的意思吗?

+1

你说“在文档中”,然后无法链接它们。 –

+0

可能是最好的参考文档(https://docs.scipy.org/doc/numpy/reference/generated/numpy.r_。HTML)并从阅读中提出具体问题。 FWIW,这是令人困惑的,但第三个数字表明当强制自然n维到n + 1或更高维时,哪个应该是'折叠'轴。 –

+0

是的,我认为第三个参数(0)表示切片发生的尺寸。这是显而易见的,如果你尝试使用0,2,1,那么o/p将是:array([[1,2,3],[4,5,6]]) – skrubber

回答

0

我还没有用过r_多的字符串参数;对我来说,更容易直接使用concatanate及其变体。

但看该文档:

具有三个逗号分隔的整数的字符串允许 轴的规格沿串联,尺寸迫使 条目的最小数量,并且该轴应包含数组的开始,其中 小于指定的维数。

'0.2.0' 
axis = 0 
make it 2d 
start with 0d 

In [79]: np.r_['0,2,0', [1,2,3], [4,5,6]] 
Out[79]: 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

甲串联等效

In [80]: np.concatenate(([1,2,3], [4,5,6])) 
Out[80]: array([1, 2, 3, 4, 5, 6]) 
In [81]: np.concatenate(([1,2,3], [4,5,6]))[:,None] 
Out[81]: 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

在这里,我级联上轴= 0,和膨胀后串连至2d。但它听起来像r_首先扩展了元素的尺寸(但我们可以仔细检查代码)。

In [83]: alist = ([1,2,3], [4,5,6]) 
In [86]: [np.expand_dims(a,1) for a in alist] 
Out[86]: 
[array([[1], 
     [2], 
     [3]]), array([[4], 
     [5], 
     [6]])] 
In [87]: np.concatenate(_, axis=0) 
Out[87]: 
array([[1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6]]) 

我使用expand_dims使输入2 d,以及第一后添加新的维度。做完,我可以连接上轴0

注意,输入r_可能已经2D,如:如果1

np.r_['0,2,0',[1,2,3], [[4],[5],[6]]] 
np.r_['0,2,0',[1,2,3], np.expand_dims([4,5,6],1)] 
np.r_['0,2,0',[1,2,3], np.atleast_2d([4,5,6]).T] 

三维数字,转动部件到

In [105]: np.atleast_2d([4,5,6]) 
Out[105]: array([[4, 5, 6]]) 

In [103]: np.r_['0,2,1',[1,2,3],[4,5,6]] 
Out[103]: 
array([[1, 2, 3], 
     [4, 5, 6]]) 

通常,如果文档不清楚,我喜欢深入代码或尝试其他输入。

In [107]: np.r_['1,2,1',[1,2,3], [4,5,6]] 
Out[107]: array([[1, 2, 3, 4, 5, 6]]) 
In [108]: np.r_['1,2,0',[1,2,3], [4,5,6]] 
Out[108]: 
array([[1, 4], 
     [2, 5], 
     [3, 6]]) 

看代码,我看到它使用

array(newobj, copy=False, subok=True, ndmin=ndmin) 

的组件扩大到所需ndmin。 3d编号用于构建transpose参数。详情凌乱,但效果是一样的东西:

In [111]: np.array([1,2,3], ndmin=2) 
Out[111]: array([[1, 2, 3]]) 
In [112]: np.array([1,2,3], ndmin=2).transpose(1,0) 
Out[112]: 
array([[1], 
     [2], 
     [3]]) 
0

enter image description here

谢谢所有的答案!现在,我认为我对这个问题有了更好的理解。所以,我绘制了思维导图。如果我错了,请纠正我。作为Python的初学者,我正努力学习更多,思考更多。最后,我必须为我可怜的英语道歉。

相关问题