以下代码取自此处
sa = sort(a[i:i+block])
n += np.r_[sa.searchsorted(bins[:-1], 'left'),
sa.searchsorted(bins[-1], 'right')]
Run Code Online (Sandbox Code Playgroud)
所以我知道searchsorted在数组sa中找到bins必须插入元素的位置以便保持sa排序(left给出我们将插入值和right右索引的位置的索引).我不明白的是它周围的整个建筑意味着什么
np.r_[array,array]
Run Code Online (Sandbox Code Playgroud)
什么是np.r_?
ome*_*rbp 32
它的作用是逐行合并.这篇文章有一些很好的例子:
>>>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])
Run Code Online (Sandbox Code Playgroud)
在这里以及numpy 的文档中阅读更多相关内容.
viv*_*vek 12
numpy.r_[array[], array[]]
Run Code Online (Sandbox Code Playgroud)
这用于沿行(第一)轴连接任意数量的数组切片。这是快速高效地创建 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]])
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的二维数组,其中包含 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)
Run Code Online (Sandbox Code Playgroud)
这显然是一种低效的方法,因为随着新数组中要包含的元素数量的增加,分配用于存储切片值的临时变量也会增加。
这是我们使用 np.r_ 的地方
>>> c = np.r_[a[1,1:3],b[1,1:3]]
array([ 4, 5, 14, 15])
Run Code Online (Sandbox Code Playgroud)
同样,如果我们想通过堆叠第二轴上的切片值来创建一个新数组,我们可以使用 np.c_
>>> c = np.c_[a[1,1:3],b[1,1:3]]
array([[ 4, 14],
[ 5, 15]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20886 次 |
| 最近记录: |