统计数组中数值出现次数
时间: 2023-11-16 07:04:11 浏览: 168
可以使用哈希表来统计数组中数值出现的次数,具体步骤如下:
1. 新建一个哈希表,键为数组中的数值,值为该数值出现的次数。
2. 遍历数组,对于每一个数值都在哈希表中寻找对应的键,如果键存在则将其对应的值加 1;如果键不存在则在哈希表中新建一个键值对,键为该数值,值为 1。
3. 遍历完整个数组后,哈希表中存储了每个数值出现的次数,可以按需要输出哈希表中的内容。
代码实现如下:
```
from collections import defaultdict
def count_num(arr):
count_dict = defaultdict(int)
for num in arr:
count_dict[num] += 1
return count_dict
# 示例
arr = [1, 2, 3, 2, 2, 5, 6, 5, 5]
print(count_num(arr))
```
输出:
```
defaultdict(<class 'int'>, {1: 1, 2: 3, 3: 1, 5: 3, 6: 1})
```
该代码使用 Python 中的 defaultdict 类来避免了在哈希表中新建键值对时的异常处理,使代码更加简洁易懂。
相关问题
用numpy统计数组中数值出现次数
可以使用numpy中的bincount函数来统计数组中数值出现的次数。比如,假设你有一个一维的numpy数组a,可以使用如下代码来统计每个数值出现的次数:
```
import numpy as np
a = np.array([1, 2, 3, 2, 1, 1, 4, 4])
counts = np.bincount(a)
print(counts)
```
输出结果:
```
[0 3 2 1 2]
```
其中,数组counts中的下标表示数值,数值表示该数值在数组a中出现的次数。例如,counts[1]表示数字1在数组a中出现的次数为3。注意,bincount函数只能用于非负整数数组。如果数组中包含负数或者小数,需要先对数组进行转换。
c语言数组统计数字出现次数
可以通过循环遍历数组并计数的方式来统计数字出现的次数,具体实现如下:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 1, 2, 3, 4, 1};
int size = sizeof(arr) / sizeof(int);
int cnt[10] = {0}; // 初始化每个数字出现的次数为0
for (int i = 0; i < size; i++) {
cnt[arr[i]]++; // 数组下标为数字,值为出现的次数
}
for (int i = 0; i < 10; i++) {
if (cnt[i] > 0) {
printf("%d出现了%d次\n", i, cnt[i]);
}
}
return 0;
}
```
输出结果:
```
1出现了3次
2出现了2次
3出现了2次
4出现了2次
5出现了1次
```
上述代码中,先定义了一个整型数组 `arr`,然后通过 `sizeof` 运算符计算出数组的大小(即元素个数),再定义一个整型数组 `cnt` 来记录每个数字出现的次数,初始值设为0。
接着使用 `for` 循环遍历数组 `arr`,对于每个元素,将其值作为下标,然后将对应的计数值加1。
最后再次使用 `for` 循环遍历 `cnt` 数组,输出出现次数大于0的数字和对应的次数。
阅读全文