Python np.r_u做什么(numpy)?

Python np.r_u做什么(numpy)?,python,numpy,Python,Numpy,以下代码取自 因此我知道searchsorted会在数组sa中查找必须插入bin元素的位置,以保持sa的排序(left给出了插入值的左侧索引和right右侧索引)。 我不明白的是它周围的整个结构意味着什么 np.r_[array,array] 什么是np.r?它所做的是行合并。有一些很好的例子: >>>V = array([1,2,3,4,5,6 ]) >>>Y = array([7,8,9,10,11,12]) >>>np.r_[V[0:

以下代码取自

因此我知道searchsorted会在数组
sa
中查找必须插入
bin
元素的位置,以保持
sa
的排序(
left
给出了插入值的左侧索引和
right
右侧索引)。 我不明白的是它周围的整个结构意味着什么

np.r_[array,array]

什么是np.r?

它所做的是行合并。有一些很好的例子:

>>>V = array([1,2,3,4,5,6 ])
>>>Y = array([7,8,9,10,11,12])
>>>np.r_[V[0:2],Y[0],V[3],Y[1:3],V[4:],Y[4:]]
array([ 1,  2,  7,  4,  8,  9,  5,  6, 11, 12])
阅读更多关于它的信息,在这里,并在numpy的

这用于沿行(第一)轴连接任意数量的阵列切片。这是一种快速高效地创建numpy阵列的简单方法

例如,要通过选择您选择的元素从两个不同的数组创建一个数组,我们必须将切片值分配给一个新变量,并使用串联方法沿一个轴连接它们

>>> a = np.arange(9).reshape(3,3)
>>> b = np.arange(10,19).reshape(3,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> b
array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18]])
我想创建一个新的二维数组,包含2*2个元素([4,5,14,15]),然后,我必须执行以下操作

>>> slided_a = a[1,1:3]
>>> sliced_b = b[1,1:3]
>>> new_array = np.concatenate((sliced_a, sliced_b), axis = 0) 
因为这显然是一种低效的方法,因为随着要包含在新数组中的元素数量的增加,分配用于存储切片值的临时变量也会增加

这就是我们使用np.r的地方_

>>> c = np.r_[a[1,1:3],b[1,1:3]]
array([ 4,  5, 14, 15])
同样,如果我们想通过在第二轴上叠加切片值来创建一个新数组,我们可以使用np.c_

>>> c = np.c_[a[1,1:3],b[1,1:3]]
array([[ 4, 14],
       [ 5, 15]])

只是为了让社区能够更好地关注任何答案,有没有什么不清楚的地方?出于某种原因,我没有想到谷歌会为numpy.r-dumby搜索。这就解决了问题,谢谢。@AlexRiley As@Gulzar:当然-但是提问者在提出问题之前仍然需要做一个基本的搜索。如果文档不存在,或者没有帮助或者不清楚,或者询问者只是想要一个比目前互联网上存在的文档更好的解释,那么这完全没问题,但是知道这一点很有帮助,这样就可以建立一个基线,并且答案可以提供最大的价值“随着元素数量…的增加,临时变量。。。增加。这就是我们使用np.r_.的地方。但是我看不出这行之间的区别:
np.concatenate((a[1,1:3],b[1,1:3]),axis=0)
np.r_[a[1,1:3],b[1,1:3]]
。为什么在这里使用
np.r\ucode>更有效?正如我所知,
np.r\ucode>优于
np.concatenate
的优点是
np.concatenate
只接受数组作为输入。为什么不使用
np.hstack
?@mrglud您可能想读一下。。。
>>> c = np.r_[a[1,1:3],b[1,1:3]]
array([ 4,  5, 14, 15])
>>> c = np.c_[a[1,1:3],b[1,1:3]]
array([[ 4, 14],
       [ 5, 15]])