询问怎么用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)
x = np.random.randint(1, size=10)
print(x)
可以使用numpy模块中的函数来完成该任务。具体步骤如下:
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)
完整代码如下:
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