我有一个包含610个数据样本的数据集,其标记数字从1到610。
因此,我为范围(1,610)中的i进行了迭代:
但是在286次迭代之后,它由于缺少数据样本287而被停止。 然后我再次手动查看所有数据,然后我知道缺少数据样本编号287,291,292。
但是我想通过for循环加载并运行数据样本。
有没有可能的解决方案?
先谢谢了。
for i in range(1,610):
trueData = np.load(path_load + 'featureMatrixTrue_of_K1_%d.npy' % i)
output = []
for c in range(2,6):
interp = scipy.interpolate.griddata((trueData[:,0],trueData[:,1]), trueData[:,c], (X.flatten(),Y.flatten()))
interp = interp.reshape(num_points, -1)
if c==5:
interp = np.logical_and(np.where(interp < 0.92,0,1), np.where(interp > 1.06,0,1))
#interp = interp.astype(int)
output.append(interp)
output = np.array(output)
答案 0 :(得分:1)
您应该优雅地允许for循环在缺少数据的情况下继续运行,而不是对287、291和292的跳转进行硬编码。另外,如果您的索引从1到610(含)范围应为range(1,611)
。
data = {1:'lorum', 2:'ipsum', 4: 'dolor'}
for i in range(1, 5):
try:
print(data[i])
except KeyError:
print('Data missing at',i)
输出:
lorum
ipsum
Data missing at 3
dolor
答案 1 :(得分:0)
您可以先尝试检查文件是否首先存在,然后再尝试加载它。 os.path
应该对您有帮助,特别是isfile()
import os.path
for i in range(1,610):
data_set_path = path_load + 'featureMatrixTrue_of_K1_%d.npy' % i
# Check if file does not exist,
# if its missing we proceed to the next value of i
if not os.path.isfile(data_set_path):
continue
trueData = np.load(data_set_path)
output = []
for c in range(2,6):
interp = scipy.interpolate.griddata((trueData[:,0],trueData[:,1]), trueData[:,c], (X.flatten(),Y.flatten()))
interp = interp.reshape(num_points, -1)
if c==5:
interp = np.logical_and(np.where(interp < 0.92,0,1), np.where(interp > 1.06,0,1))
#interp = interp.astype(int)
output.append(interp)
output = np.array(output)