查找Python列表中最常见元素的有效方法是什么?
我的列表项可能不具有哈希值,因此无法使用字典.同样在绘制的情况下,应返回具有最低索引的项目.例:
>>> most_common(['duck', 'duck', 'goose'])
'duck'
>>> most_common(['goose', 'duck', 'duck', 'goose'])
'goose'
Run Code Online (Sandbox Code Playgroud) 我有一个包含整数的2D数组(正数或负数).每行表示特定空间站点随时间的值,而每列表示给定时间内各种空间站点的值.
所以,如果数组如下:
1 3 4 2 2 7
5 2 2 1 4 1
3 3 2 2 1 1
Run Code Online (Sandbox Code Playgroud)
结果应该是
1 3 2 2 2 1
Run Code Online (Sandbox Code Playgroud)
请注意,当模式有多个值时,任何一个(随机选择)都可以设置为模式.
我可以一次迭代查找模式的列,但我希望numpy可能有一些内置函数来做到这一点.或者,如果有一个技巧可以有效地找到它而不循环.
在Python中,我有一个列表:
L = [1, 2, 45, 55, 5, 4, 4, 4, 4, 4, 4, 5456, 56, 6, 7, 67]
Run Code Online (Sandbox Code Playgroud)
我想确定发生次数最多的项目.我能够解决它,但我需要最快的方法来解决它.我知道有一个很好的Pythonic答案.
我使用Python并拥有一个值为1.0,2.0,3.0,4.0,5.0,6.0和np.nan作为NoData的数组.
我想用一个值填充所有"nan".该值应该是周围值的大部分.
例如:
1 1 1 1 1
1 n 1 2 2
1 3 3 2 1
1 3 2 3 1
Run Code Online (Sandbox Code Playgroud)
在该示例中,"n"将呈现"nan".其大多数邻居的值为1.因此,"nan"将被值1替换.
注意,由"nan"组成的孔的尺寸可以是1到5.例如(最大尺寸为5纳米):
1 1 1 1 1
1 n n n 2
1 n n 2 1
1 3 2 3 1
Run Code Online (Sandbox Code Playgroud)
这里"nan"的洞有以下周围的值:
surrounding_values = [1,1,1,1,1,2,1,2,3,2,3,1,1,1] -> Majority = 1
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码:
from sklearn.preprocessing import Imputer
array = np.array(.......) #consisting of 1.0-6.0 & np.nan
imp = Imputer(strategy="most_frequent")
fill = imp.fit_transform(array)
Run Code Online (Sandbox Code Playgroud)
这非常好用.但是,它只使用一个轴(0 =列,1 =行).默认值为0(列),因此它使用同一列的大多数周围值.例如:
Array
2 1 2 1 …Run Code Online (Sandbox Code Playgroud)