Python numpy

询问怎么用numpy把[0, 2, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 1, 0, 0, 2, 0]统计该列表0和非0出现的次数,并把非0数进行叠加

基于new bing的编写


import numpy as np

# 列表数据
data = np.array([0, 2, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 1, 0, 0, 2, 0])

# 0出现的次数
zero_count = np.count_nonzero(data == 0)

# 非0出现的次数
nonzero_count = np.count_nonzero(data != 0)

# 非0数的叠加和
nonzero_sum = np.sum(data[data != 0])

print("0出现的次数:", zero_count)
print("非0出现的次数:", nonzero_count)
print("非0数的叠加和:", nonzero_sum)

  • 这篇文章讲的很详细,请看:【Numpy】实现0变1和1变0即取反操作
  • 除此之外, 这篇博客: numpy学习笔记二:随机抽样中的 [0 0 0 1 0 1 0 0 0 0] 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • x = np.random.randint(1, size=10)
    print(x)

  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用numpy模块中的函数来完成该任务。具体步骤如下:

    1. 导入numpy模块。
    import numpy as np
    
    1. 定义要统计的列表。
    lst = [0, 2, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 1, 0, 0, 2, 0]
    
    1. 使用numpy模块中的函数来找到非零元素的索引,进而统计0和非0出现的次数。
    nz_index = np.nonzero(lst)[0]  # 找到非零元素的索引
    
    zero_count = len(lst) - len(nz_index)  # 统计0的个数
    
    nonzero_sum = sum(lst[nz_index])  # 将非零元素叠加
    
    1. 打印结果。
    print('列表中0的个数为:', zero_count)
    print('列表中非0的个数为:', len(nz_index))
    print('非0元素之和为:', nonzero_sum)
    

    完整代码如下:

    import numpy as np
    
    lst = [0, 2, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 1, 0, 0, 2, 0]
    
    nz_index = np.nonzero(lst)[0]  # 找到非零元素的索引
    
    zero_count = len(lst) - len(nz_index)  # 统计0的个数
    
    nonzero_sum = sum(lst[nz_index])  # 将非零元素叠加
    
    print('列表中0的个数为:', zero_count)
    print('列表中非0的个数为:', len(nz_index))
    print('非0元素之和为:', nonzero_sum)
    

    输出结果为:

    列表中0的个数为 22
    列表中非0的个数为 8
    非0元素之和为 10