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

Numpy 如何找出nd数组每行中特定元素的出现次数?,numpy,count,Numpy,Count,这是我的数据集,我需要找出nd数组的每一行中的假预测计数或真预测计数是否更大,并将结果存储在第三个数组中,NumPy数组中是否有用于此类操作的函数请提供帮助。假设您的数据具有维度(n,2),您可以执行以下操作: [['fake' 'fake' 'fake' 'fake' 'fake'] ['real' 'real' 'real' 'real' 'real'] ['real' 'real' 'fake' 'fake' 'real'] ... ['real' 'real' 'real' 'r

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

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

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

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

[['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']]
假设您的数组(arr)包含假的或真的, 您可以运行:

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==“real”)
    -将数组转换为布尔数组(无论 每个元素都是真实的)
  • sum(axis=1)
    -按每行生成总和
  • …>arr.shape[1]/2
    -是否在 特定行)大于行大小的一半
结果是:

moreReal = (arr == 'real').sum(axis=1) > arr.shape[1] / 2
i、 e.行1、2和3的真实条目比假条目多

编辑 如果您的起点是一个简单的python列表,那么从 创建Numpy数组:

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

arr = np.array([
    ['fake', 'fake', 'fake', 'fake', 'fake'],
    ...
])
假设您的数组(arr)包含假的或真的, 您可以运行:

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==“real”)
    -将数组转换为布尔数组(无论 每个元素都是真实的)
  • sum(axis=1)
    -按每行生成总和
  • …>arr.shape[1]/2
    -是否在 特定行)大于行大小的一半
结果是:

moreReal = (arr == 'real').sum(axis=1) > arr.shape[1] / 2
i、 e.行1、2和3的真实条目比假条目多

编辑 如果您的起点是一个简单的python列表,那么从 创建Numpy数组:

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

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

@valdi_bo和@lith但是我的标签是真的和假的,如何将NumPy数组中的这些布尔值转换为真的和假的标签。Fakse应该是假的,True应该是真的。我已经回答了你的问题:(arr=='real')-将你的数组转换成布尔数组(每个元素是否都是真的)。@valdi_-bo和@lith但是我的标签是真的和假的,如何将NumPy数组中的这些布尔值转换成真的和假的标签。其中Fakse应该是假的,True应该是真的。我已经回答了你的问题:(arr=='real')-将你的数组转换成bool数组(无论每个元素是否为真)。