比较时跳过特定值
Skipping over a specific value when comparing
我有 10 个名为 A_1,A_2.......A_10 的 txt 文件,我想将其与名为 A 的 txt 文件进行比较。我的目标是找到特定列的值之间的差异之和,但问题在于 10 个 txt 文件(A_1,A_2.....A_10)和A,我在列中有一些等于 -1.00000E+31.I 的错误值,我被困在如何操作代码上,以便 Python 在值等于 -1.00000E+31 时跳过并且移动到下一个,想到使用 np.nan 但这不起作用,因为它使总和等于 nan。任何建议都会很有帮助。
import numpy as np
filelist=[]
for i in range(1,11):
filelist.append("/Users/Hrihaan/Desktop/A_%s.txt" %i)
for fname in filelist:
data=np.loadtxt(fname)
data1=np.loadtxt('/Users/Hrihaan/Desktop/A.txt')
x=data[:,1]
x1=data1[:,1]
bad = np.where(data[:,1] == -1E31)
data[bad,1] = np.nan
bad1 = np.where(data1[:,1] == -1E31)
data1[bad1,1] = np.nan
x2=(x-x1)
x3=sum(x2)
print(fname)
print(x3)
既然你 "thought of using np.nan
but that's not working as it's giving the total sum to be equal to nan
",numpy.nansum
就应该完成这项工作。它returns"the sum of array elements over a given axis treating Not a Numbers (NaNs) as zero."
如果您需要平均跳过 numpy.nansum
直接进入 numpy.nanmean
。
我有 10 个名为 A_1,A_2.......A_10 的 txt 文件,我想将其与名为 A 的 txt 文件进行比较。我的目标是找到特定列的值之间的差异之和,但问题在于 10 个 txt 文件(A_1,A_2.....A_10)和A,我在列中有一些等于 -1.00000E+31.I 的错误值,我被困在如何操作代码上,以便 Python 在值等于 -1.00000E+31 时跳过并且移动到下一个,想到使用 np.nan 但这不起作用,因为它使总和等于 nan。任何建议都会很有帮助。
import numpy as np
filelist=[]
for i in range(1,11):
filelist.append("/Users/Hrihaan/Desktop/A_%s.txt" %i)
for fname in filelist:
data=np.loadtxt(fname)
data1=np.loadtxt('/Users/Hrihaan/Desktop/A.txt')
x=data[:,1]
x1=data1[:,1]
bad = np.where(data[:,1] == -1E31)
data[bad,1] = np.nan
bad1 = np.where(data1[:,1] == -1E31)
data1[bad1,1] = np.nan
x2=(x-x1)
x3=sum(x2)
print(fname)
print(x3)
既然你 "thought of using np.nan
but that's not working as it's giving the total sum to be equal to nan
",numpy.nansum
就应该完成这项工作。它returns"the sum of array elements over a given axis treating Not a Numbers (NaNs) as zero."
如果您需要平均跳过 numpy.nansum
直接进入 numpy.nanmean
。