我有一些来自实验的值,我想删除一些相对于其他行的行。意思:测量场,偏光以及偏光的误差。现在进行此测量的机器有时不会在其中一些行中写入值。所以我可能会得到:field = data[0]
field = [1,2,3,3,2,1,nan,4,1,2]
polarization = [nan, 10,230,13,123,50,102,90,45]
error = [0.1, 0.1, 0.2, 0.1, 0.1, 0.3, 0.1, 0.1, 0.4, 0.2]
现在我想删除场、极化和误差的第一个元素,因为极化[0] 值 = nan. 以及所有数组的 [6] 值,因为 field[6] = nan.
这就是我获取数据的方式:
class DataFile(object):
def __init__(self, filename):
self._filename = filename
def read_dat_file(self):
data = np.genfromtxt(self._filename, delimiter=',', \
usecols=(3,4,5,), skip_header=23, skip_footer=3, unpack=True, converters={\
3: lambda x: self._conv(x), \
4: lambda x: self._conv(x), \
5: lambda x: self._2_conv(x)})
return data
a = DataFile("DATFILE.DAT")
print a
_conv 函数只是进行一些单位转换,或者如果值为“”,则写入“nan”。我试图做类似的事情:
data = data[~np.isnan(data).any(axis=1)]
但是后来我拿回了一个数组,事情变得一团糟。我的下一个方法是计算元素,从所有数组中删除相同的元素......等等。工作,但它是丑陋的。那么这里最好的解决方案是什么?