如何計算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