如何找出nd数组每行中特定元素的出现次数

  • 本文关键字:元素 nd 何找出 数组 numpy count
  • 更新时间 :
  • 英文 :

[['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']]

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

假设您的数据具有维度(n,2),您可以执行以下操作:

import numpy as np
# Example array
a = np.array([['fake', 'fake', 'fake', 'fake', 'fake'],
['real', 'real' ,'real' ,'real' ,'real'],
['real', 'real', 'fake', 'fake' ,'real']])
# For n even this will bias into the 'real' category
print(np.sum((a == 'fake'), axis = 1) > a.shape[1] // 2)

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

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

详细信息:

  • (arr == 'real')-将数组转换为bool数组(无论每个元素都是real(
  • sum(axis=1)-按每行生成和
  • ... > arr.shape[1] / 2-实际元素的数量(特定行(大于行大小的一半

结果是:

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

即,第1、2和3行的real条目多于fake

编辑

如果你的起点是一个简单的Python列表,那么从创建Numpy数组:

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

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

isReal = arr == 'real'

最新更新