我正面临以下问题。我有4个数据文件(Data_1 ... Data_4),我正在尝试计算第2列中小于或等于5的项目数。我的以下代码可以完成这项工作。
import numpy as np
filelist=[]
for i in list(range(1,5)):
filelist.append("/Users/Hrihaan/Desktop/Data_%s.txt" %i)
for fname in filelist:
data=np.loadtxt(fname)
z=data[:,1]
count= len([i for i in z if i <= -5]) # output 5 3 0 9
x= np.array(count)
Average=np.mean(x)
print(Average)
但我坚持如何处理输出(5,3,0,9),我想从输出(计数)创建一个数组来进行简单的数学计算,如找到平均值或中位数。所以平均值应该是(5 + 3 + 0 + 9/4 = 4.25)但是当我尝试打印(平均值)时,我得到相同的输出5 3 0 9,而不是平均值。
非常感谢任何帮助。
答案 0 :(得分:2)
不是为循环中的每个循环创建一个数组,而是首先创建一个列表,并在循环结束后将该列表转换为数组。
import numpy as np
filelist=[]
for i in list(range(1,5)):
filelist.append("/Users/Hrihaan/Desktop/Data_%s.txt" %i)
counts = []
for fname in filelist:
data=np.loadtxt(fname)
z=data[:,1]
count= len([i for i in z if i <= -5]) # output 5 3 0 9
counts.append(count)
x = np.array(counts)
Average=np.mean(x)
print(Average)
答案 1 :(得分:1)
我不确定我理解您的问题,而且您的代码无法复制,因为我们没有您的文件。
但如果我理解正确,您应该从代码中删除len()
:
for fname in filelist:
#...
count = [i for i in z if i <= -5]
count = [5, 3, 0, 9] # for instance
x = np.array(count) # x will output: array([5, 3, 0, 9])
Average = np.mean(x)
print(Average) # will print: 4.25