如何计算ndarray中每个数据点的元素数量?计算numpy ndarray中元素的数量
我想要做的是对我的ndarray中至少存在N次的所有值运行OneHotEncoder。
我也想用另一个它不出现在数组中的元素(我们称之为new_value)替换出现少于N次的所有值。
因此,例如,我有:
import numpy as np
a = np.array([[[2], [2,3], [3,34]],
[[3], [4,5], [3,34]],
[[3], [2,3], [3,4] ]]])
与阈值N = 2我想是这样的:
b = [OneHotEncoder(a[:,[i]])[0] if count(a[:,[i]])>2
else OneHotEncoder(new_value) for i in range(a.shape(1)]
所以才明白,我想换人,不考虑onehotencoder和使用new_value = 10我的数组应该看起来像:
a = np.array([[[10], [2,3], [3,34]],
[[3], [10], [3,34]],
[[3], [2,3], [10] ]]])
你真的需要有列表数组吗?这会非常严重地破坏numpy。通常由快速C函数调用处理的许多操作(比如相等比较)现在必须被中继到昂贵的Python调用。 @Ophion的代码按照陈述解决了你的问题,但是你应该认真考虑一下不同的方法(用np.nan的浮点数组,还是用例如-1表示缺失值的int整数),它们可以让你利用numpy的功能最充分的是不是一个更好的选择。 – Jaime
这个结构就像是考虑各种各样的bigrams/trigrams combinatinon 如果我有条目[3,2,1],那么我想考虑unigrams [3],[2],[1],但也可以是bigrams [ 3,2]和[2,1],因此条目将变为[[3],[2],[1],[3,2],[2,1]] 我没有编写代码,我不想修改它,因为它非常复杂,我只是想看看性能(就修正后的预测而言)是否会增加对罕见事件的过滤并将它们全部放在同一类别中。 但是可能你很厉害,我应该加快速度,因为我无论如何都在等待。 – user2616532