【发布时间】:2021-04-04 00:55:21
【问题描述】:
我是新来的,想和大家分享一个我面临的问题
基本上我必须根据另一个数组的元素重新编号一个数组。
更多细节:
我有一个 int 数组 a
a=array([ 1, 2, 3, ..., 21041, 21042, 21043])
与
len(a)=21043
然后,对“a”应用掩码,得到 b
b=a[mask]
b=array[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 28 32 33 34 47 54 55 62....21043]
与
len(b)=15717
此时我已经对这个数组进行了简单的排序:
b_renumber=array[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23....15717]
所以“b”中的数字 28 在“b_renumber”中变为 21,32 变为 22,依此类推。
现在问题是第三个数组 c
因为 c 的长度大于 b。
len(c)=46153
并且由以下给出:
c=array[ 3 4 142 633 12 19 564 497 513 54 308 177 254 532 155 3 273 28 ...21037]
所以基本上 c 是一个长度为 46153(未排序)的数组,其中的元素从 1 到 21043,以及数组 b,和 b 一样,一些数字不存在(例如 21 22 23 ...等) 即不存在 b 中也不存在 c 中的相同元素。
我想要做的是重新编号 c 的元素,以便在 c 的元素的值和 b_renumber 之间存在链接。 b中的示例我们有数字28,b_renumber中的数字变为21(从b到b_renumber,28 -> 21),我想做的是:每次遇到c中的值28时,这必须变为21,其他数字相同。
最后一点:数组仍然很小,但我必须使用更大维度的数组,所以我必须以有效的方式执行此操作,也许存在允许我执行此操作的某个包的函数。请我接受每一个建议
很抱歉帖子的长度,我希望有人可以帮助我。
提前谢谢你。
马特奥
【问题讨论】: