首页 > 解决方案 > 如何找出每行nd数组中特定元素的出现次数?

问题描述

[['fake' 'fake' 'fake' 'fake' 'fake']
 ['real' 'real' 'real' 'real' 'real']
 ['real' 'real' 'fake' 'fake' 'real']
 ...
 ['real' 'real' 'real' 'real' 'real']
 ['fake' 'fake' 'fake' 'fake' 'fake']
 ['fake' 'fake' 'fake' 'real' 'fake']]

这是我的数据集,我需要找出 nd 数组的每一行中的假预测计数或真实预测计数是否更大,并将结果存储在第 3 个数组中,NumPy 数组中是否有任何函数可用于此类操作,请对此提供帮助。

标签: numpycount

解决方案


假设您的数组(arr)包含fakereal,您可以运行:

moreReal = (arr == 'real').sum(axis=1) > arr.shape[1] / 2

细节:

  • (arr == 'real')- 将您的数组转换为布尔数组(每个元素是否真实)。
  • sum(axis=1)- 按每一行生成总和。
  • ... > arr.shape[1] / 2-实际元素的数量(特别是行)是否大于行大小的一半。

结果是:

array([False,  True,  True,  True, False, False])

即第 1、2 和 3 行的真实条目比fake多。

编辑

如果您的起点是一个普通的 Pythonic 列表,请从创建Numpy数组开始:

arr = np.array([
    ['fake', 'fake', 'fake', 'fake', 'fake'],
    ...
])

然后,如果要生成bool数组,请运行:

isReal = arr == 'real'

推荐阅读