我尝试了一些解决方案: 1。)
uniqueValues, indexList,occurCount = np.unique(desired_array,
return_index=True, return_counts=True)
print(uniqueValues,indexList,occurCount)
但是indexList
仅给出数字的第一个出现。例如:如果num 33发生在20,56,3000,indexList将仅显示它发生在20。由于33发生的次数少于10次,即3次,因此我需要所有位置。
2。)我决定使用字典来查找所有索引位置。但这是行不通的。
for i in range(5000):
...: if not d.get(i):
...: d[desired_array[i]]=[i]
...: else:
...: indices = d[desired_array[i]]
...: indices.append(i)
答案 0 :(得分:0)
此工作为collections.Counter尖叫:
from collections import Counter
desired_array = [1, 2, 3, 1, 3, 5, 3]
result = Counter(desired_array)
print(result)
这将打印出唯一元素和出现次数:
Counter({3: 3, 1: 2, 2: 1, 5: 1})
您可以替换
for i in range(1250):
var = desired_array[i]
if not d.get(var):
d[var] = []
# print(var)
s = d[var]
s.append(i)
使用
for i in range(1250):
var = desired_array[i]
d.setdefault(var, []).append(i)
根据文档dict.setdefault(key, default):
如果key在字典中,则返回其值。如果不是,请插入具有默认值的密钥,然后返回默认值。默认默认为无。
要编写一个csv文件,最好使用标准的csv.Writer
类:
import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(someiterable)
如果要将字典的键/值对写到csv文件中,则需要编写如下内容:
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
for k, v in desired_array.items():
writer.writerow((k, v))