简体   繁体   English

np.r_ 做什么(numpy)?

[英]What does np.r_ do (numpy)?

Following code is taken from numpy function base on github以下代码取自基于 github 的 numpy 函数

sa = sort(a[i:i+block])
n += np.r_[sa.searchsorted(bins[:-1], 'left'),
           sa.searchsorted(bins[-1], 'right')]

So I know that searchsorted finds the position in the array sa where the elements of bins would have to be inserted in order to keep sa sorted ( left gives the index left of where we would insert the value and right the right index).所以我知道 searchsorted 在数组sa中找到必须插入bins元素以保持sa排序的位置( left给出我们插入值的right的左侧索引, right正确的索引)。 What I don't understand is the whole construction around it meaning what is我不明白的是围绕它的整个结构意味着什么

np.r_[array,array]

What is np.r_ ?什么是np.r_

What it does is row-wise merging.它所做的是按行合并。 This post has some nice example: 这篇文章有一些很好的例子:

>>>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])

Read more about it in this , and in the documentation of numpy.在 this 和 numpy 的文档中阅读更多关于它的信息

numpy.r_[array[], array[]]

This is used to concatenate any number of array slices along row (first) axis.这用于沿行(第一)轴连接任意数量的数组切片。 This is a simple way to create numpy arrays quickly and efficiently.这是一种快速有效地创建 numpy 数组的简单方法。

For instance, to create an array from two different arrays by selecting the elements of your choice, we'll have to assign the sliced values to a new varaible and use concatenation method to join them along an axis.例如,要通过选择您选择的元素从两个不同的数组创建一个数组,我们必须将切片值分配给一个新变量,并使用串联方法沿轴连接它们。

>>> 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]])

I want to create a new 2-D array, with 2*2 elements ([4,5,14,15]) then, I'll have to do the following,我想创建一个新的二维数组,包含 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) 

As this is clearly an inefficient way because, as the number of elements that are to be included in the new array increases, the temporary variables that are assigned to store the sliced values increases.由于这显然是一种低效的方法,因为随着要包含在新数组中的元素数量的增加,分配给存储切片值的临时变量也会增加。

This is where we use np.r_这是我们使用 np.r_ 的地方

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

Likewise, if we want to create a new array by stacking the sliced values in 2nd axis, we can use np.c_同样,如果我们想通过在第二个轴上堆叠切片值来创建一个新数组,我们可以使用 np.c_

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM