Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用numpy进行数组重分类_Python_Arrays_Pandas_Numpy - Fatal编程技术网

Python 用numpy进行数组重分类

Python 用numpy进行数组重分类,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,我有一个包含10位数字的大(50000 x 50000)64位整数NumPy数组。阵列中大约有250000个唯一数字 我有第二个重新分类表,它将第一个数组中的每个唯一值映射为1到100之间的整数。我希望将第一个数组中的值重新分类为第二个数组中的相应值 我尝试过两种方法,虽然它们有效,但速度非常慢。在这两种方法中,我都创建了相同维度的空白(零)数组 new_array = np.zeros(old_array.shape) 第一种方法: for old_value, new_value in l

我有一个包含10位数字的大(50000 x 50000)64位整数NumPy数组。阵列中大约有250000个唯一数字

我有第二个重新分类表,它将第一个数组中的每个唯一值映射为1到100之间的整数。我希望将第一个数组中的值重新分类为第二个数组中的相应值

我尝试过两种方法,虽然它们有效,但速度非常慢。在这两种方法中,我都创建了相同维度的空白(零)数组

new_array = np.zeros(old_array.shape)
第一种方法:

for old_value, new_value in lookup_array:
    new_array[old_array == old_value] = new_value
第二种方法,其中lookup_数组位于标题为“Old”和“New”的数据帧中:


是否有一种更快的方法来重新分类值

将查找表存储为250000个元素的数组,其中每个索引都有对应的值。例如,如果您有以下内容:

lookups = [(old_value_1, new_value_1), (old_value_2, new_value_2), ...]
然后你可以做:

idx, val = np.asarray(lookups).T
lookup_array = np.zeros(idx.max() + 1)
lookup_array[idx] = val
当您获得该值时,您可以简单地获得转换后的数组,如下所示:

new_array = lookup_array[old_array]
new_array = lookup_array[old_array]