如果我有
<div style="display: inline; background-color: rgb(255, 179, 0);" class="gwt-TreeItem gwt-TreeItem-selected" role="treeitem" id="gwt-uid-102" aria-level="9" aria-setsize="4" aria-posinset="1" aria-selected="true">
我如何到达应该
的b1a1 = np.array([1,2,3,4])
a2 = np.array(list('abcd'))
b2 = np.array(list('aabcccdd'))
编辑:换句话说,array([1, 1, 2, 3, 3, 3, 4, 4])
值对应a1
'代码',我想生成与a2
对应的值。
答案 0 :(得分:1)
假设要对a2
进行排序,这里使用的是np.searchsorted
-
a1[np.searchsorted(a2,b2)]
示例运行 -
In [145]: a1 = np.array([1,2,3,4])
...: a2 = np.array(list('abcd'))
...: b2 = np.array(list('aabbccdd'))
...:
In [146]: a1[np.searchsorted(a2,b2)]
Out[146]: array([1, 1, 2, 2, 3, 3, 4, 4])
对于a2
未排序的一般情况,我们需要引入sorter
参数 -
In [148]: np.random.shuffle(a2)
In [149]: a2
Out[149]:
array(['b', 'd', 'c', 'a'],
dtype='|S1')
In [152]: sidx = a2.argsort()
In [155]: a1[sidx[np.searchsorted(a2,b2, sorter=sidx)]]
Out[155]: array([4, 4, 1, 1, 3, 3, 2, 2])
答案 1 :(得分:1)
Numpys内置函数numpy.repeat
和numpy.tile
非常适合这类工作。
示例:
import numpy as np
arr = np.array((1, 2, 3, 4))
print(arr)
[1, 2, 3, 4]
print(numpy.repeat(arr, 2))
[1, 1, 2, 2, 3, 3, 4, 4]
print(numpy.tile(arr, 2))
[1, 2, 3, 4, 1, 2, 3, 4]