Python np.r_u做什么(numpy)?
以下代码取自 因此我知道searchsorted会在数组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:
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]])