一、常规计数
在数据分析和科学计算时,经常需要进行计数操作。使用numpy中的count_nonzero函数可以方便地对数组中的非零元素进行计数。
import numpy as np # 生成数组 arr = np.array([[1, 2, 3], [0, 4, 5], [6, 0, 8]]) # 计算非零元素个数 count = np.count_nonzero(arr) print(count) # 输出:7
count_nonzero函数还支持在某个轴上进行计数,如在行上计数:
# 对行进行计数 count_row = np.count_nonzero(arr, axis=1) print(count_row) # 输出:[3 2 2]
二、统计计数
在数据分析中,经常需要进行统计计数,比如统计一组数中每个数字出现的次数,可以使用numpy中的unique函数和bincount函数实现。
使用unique函数可以找到数组中的唯一值,然后使用bincount函数进行计数:
# 生成随机数组 arr = np.random.randint(low=1, high=6, size=10) print(arr) # 输出:[2 2 1 2 5 2 1 4 2 3] # 统计每个数字出现的次数 unique, counts = np.unique(arr, return_counts=True) counts_each_num = np.zeros(6, dtype=int) counts_each_num[unique] = counts print(counts_each_num) # 输出:[0 2 5 1 1 1]
如果需要快速统计一组数中每个数字出现的次数,可以使用numpy中的bincount函数:
# 使用bincount函数统计每个数字出现的次数 counts_each_num = np.bincount(arr) print(counts_each_num) # 输出:[0 2 5 1 1 1]
三、条件计数
在进行数据筛选时,经常需要对符合条件的数据进行计数。可以使用numpy中的where函数和count_nonzero函数实现条件计数。
如统计数组中大于3的元素个数:
# 使用where函数找到大于3的元素的索引 idx = np.where(arr > 3) # 使用count_nonzero函数计算元素个数 count = np.count_nonzero(arr[idx]) print(count) # 输出:2
四、行列互换计数
在进行数据分析时,经常需要对矩阵进行行列互换,并对新矩阵进行计数。可以使用numpy中的transpose函数和count_nonzero函数实现。
例如,对下面的矩阵进行行列互换,然后计算非零元素的个数:
# 生成2*3的矩阵 arr = np.array([[0, 1, 2], [3, 4, 5]]) # 对矩阵进行行列互换 new_arr = np.transpose(arr) # 计算非零元素个数 count = np.count_nonzero(new_arr) print(count) # 输出:6
五、多维计数
在进行多维数据分析时,经常需要进行多维计数操作。numpy中提供了ravel函数可以将多维数组展平为一维,然后进行计数。同时也可以在指定轴上进行计数。
例如,对3维矩阵进行计数:
# 生成3维矩阵 arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 将3维矩阵展平为一维,然后进行计数 count = np.count_nonzero(np.ravel(arr)) print(count) # 输出:8 # 在指定轴(第2个轴)上进行计数 count_axis = np.count_nonzero(arr, axis=1) print(count_axis) # 输出:[[2 2] [2 2]]