两个数组(一个表示索引,另一个表示重复次数).我想删除基于重复次数的索引(python)



我在一个colab中使用一些数据帧,我有两个numpy数组:

-第一个表示一行的索引。-另一个表示重复次数(在这之前我做了一些方法(。

如果我打印两个数组,我会得到这样的东西:

print(uniqueValues, occurCount)
OUTPUT: [   13    33    66 ... 99907 99911 99928] [7 1 6 ... 1 6 4]

我们可以将其解释为:13重复7次,33重复1次。。。。

现在的问题是:如何根据重复次数从两个数组中删除索引和重复?

示例:如果<5然后拆下元件预期输出:[13 66…99911][7 6…6]

您可以使用布尔索引将occurCount中的匹配值用作uniqueValuesoccurCount上的过滤器:

uniqueValues = uniqueValues[occurCount >= 5]
occurCount = occurCount[occurCount >= 5]

例如:

import numpy as np
uniqueValues = np.array([13, 33, 66, 99907, 99911, 99928])
occurCount = np.array([7, 1, 6, 1, 6, 4])
uniqueValues = uniqueValues[occurCount >= 5]
occurCount = occurCount[occurCount >= 5]
print(uniqueValues )
print(occurCount)

输出:

[   13    66 99911]
[7 6 6]
uniqueValues = np.array([13, 33, 66, 99907, 99911, 99928])
occurCount = np.array([7, 1, 6, 1, 6, 4])
np.array([uniqueValues, occurCount])[:, occurCount >= 5]

将返回一个2维数组和您的结果。但逻辑与Nick所指出的是一样的。

创建一个新数组,在其中添加符合<5.然后使用这些索引值从两个数组中删除这些值,并存储数组的新版本。需要将其分配给变量,因为原始的np数组是不可变的。

import numpy as np
uniqueValues = np.array([13, 33, 66, 99907, 99911, 99928])
occurCount = np.array([7, 1, 6, 1, 6, 4])
indexes = []
for index, item in enumerate(y):
if item < 5:
indexes.append(index)

y = np.delete(y, indexes)
x = np.delete(x, indexes)
print(x, y)

最新更新