我在一个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
中的匹配值用作uniqueValues
和occurCount
上的过滤器:
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)