首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用np.loadtxt使python只返回有效数据

如何使用np.loadtxt使python只返回有效数据
EN

Stack Overflow用户
提问于 2018-06-14 05:23:51
回答 1查看 41关注 0票数 0

我写了一个加载数据文件的代码。我已经这样做了,所以如果数据不满足特定的要求,就会出现错误消息。然而,我需要它也只返回有效的数据。我自己似乎找不到这样的方法,所以我希望有人能帮助我。我的代码如下

代码语言:javascript
复制
import numpy as np
def dataLoad(filename):
initialData = np.loadtxt(filename)

for i in range (len(initialData)):
    if initialData[i,0]>60 or initialData[i,0]<10:
        print("Temperature must be between 10 and 60. Error in column 1 row {}.".format(initialData.shape[0]))
    if initialData[i,1]<0:
        print("Bacteria Growth Rate must be higher than, or equal to 0. Error in column 2 row row {}.".format(initialData.shape[0]))
    if initialData[i,2] not in [1, 2, 3, 4]:
        print("Bacteria Category must be one of the numbers: 1, 2, 3 and 4. Error in column 3 row {}.".format(initialData.shape[0]))
    else:
        pass
data = initialData.reshape(-1,3)
return data
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 05:56:53

该问题的一种解决方案是通过将无效行的索引存储在列表中来跟踪它们,然后在返回之前使用np.delete将它们从initialData中删除。该函数将一个数组、要删除的索引列表以及删除数据点的轴作为输入,在本例中,当您删除行时,轴将为0。

然后,您的代码将如下所示:

代码语言:javascript
复制
import numpy as np
def dataLoad():
    del_indices= []
    initialData = np.loadtxt(filename)

    for i in range (len(initialData)):
        if initialData[i,0]>60 or initialData[i,0]<10:
            print("Temperature must be between 10 and 60. Error in column 1 row {}.".format(initialData.shape[0]))
            del_indices.append(i)
        if initialData[i,1]<0:
            print("Bacteria Growth Rate must be higher than, or equal to 0. Error in column 2 row row {}.".format(initialData.shape[0]))
            del_indices.append(i)
        if initialData[i,2] not in [1, 2, 3, 4]:
            print("Bacteria Category must be one of the numbers: 1, 2, 3 and 4. Error in column 3 row {}.".format(initialData.shape[0]))
            del_indices.append(i)
    initialData = np.delete(initialData,del_indices, axis=0)
    data = initialData.reshape(-1,3)
    return data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50846477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档