假设我有一个这样的数组:
a = np.array([5, 2, 13, 13, 222])
我想将它转换为这样的数组:
b = np.array([1, 0, 2, 2, 3])
我已尝试过np.argsort,但返回
np.argsort(np.array([5, 2, 13, 13, 222])) # = array([1, 0, 2, 3, 4])
并不能完全满足我的需要(它仍然为不同的元素分配不同的索引。
到目前为止,我已经写了这个小功能来做我想要的事情:
def indexate_array(v):
v_unique = np.unique(v)
result = shape_like(v)
dic = {value: result for value, result in zip(v_unique, np.argsort(v_unique))}
for i, val in enumerate(v):
result[i] = dic[val]
return result
是否有一种优雅的方式来执行我想要的操作使用numpy / scipy?
答案 0 :(得分:2)
这是numpy.unique
的<div class="camera_main_container wow fadeIn">
<div class="slider_wrapper">
<div class="" id="camera_wrap">
<div data-src="@Url.Content("~/Content/images/slide1.jpg")">
<div class="caption fadeIn">
<div class="caption_bg">
<span class="slider_txt1">Let professional </span>
<span class="slider_txt2">appraiser help you </span>
<span class="slider_txt3">Lorem ipsum dolor sit amet conse ctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco. in voluptate.</span>
<a href="#" class="camera_more_btn">Read more</a>
</div>
</div>
</div>
<div data-src=@Url.Content("~/Content/images/slide2.jpg")>
<div class="caption fadeIn">
<div class="caption_bg">
<span class="slider_txt1">Discover the </span>
<span class="slider_txt2 color4">value of your home</span>
<span class="slider_txt3 color4">Lorem ipsum dolor sit amet conse ctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco. in voluptate.</span>
<a href="#" class="camera_more_btn v2">Read more</a>
</div>
</div>
</div>
<div data-src=@Url.Content("~/Content/images/slide3.jpg")>
<div class="caption fadeIn">
<div class="caption_bg">
<span class="slider_txt1">You should know</span>
<span class="slider_txt2 color4">the price</span>
<span class="slider_txt3 color4">Lorem ipsum dolor sit amet conse ctetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco. in voluptate.</span>
<a href="#" class="camera_more_btn v2">Read more</a>
</div>
</div>
</div>
</div>
</div>
</div>
参数:
return_inverse
答案 1 :(得分:0)
如果你需要类似但没有numpy
库的东西
a = [5, 2, 13, 13, 222]
b = [1, 0, 2, 2, 3]
min_ranks = {}
for rank,key in enumerate(sorted(a)):
min_ranks[key] = min(rank, min_ranks[key]) if key in min_ranks else rank
c = [ min_ranks[k] for k in a]
print(c)