簡體   English   中英

如何使python僅使用np.loadtxt返回有效數據

[英]How to make python only return valid data using np.loadtxt

我已經編寫了用於加載數據文件的代碼。 我這樣做了,因此如果數據不符合特定要求,則會出現錯誤消息。 但是我需要它也只返回有效數據。 我似乎無法獨自找到一種方法,因此希望有人可以幫助我。 我的代碼如下

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

解決該問題的一種方法是通過將無效行的索引存儲在列表中,然后使用np.delete在返回之前將它們從initialData刪除來跟蹤無效行的索引。 該函數將一個數組,要刪除的索引列表以及應該刪除數據點的軸作為輸入,在這種情況下,當您刪除行時,該點將為0。

您的代碼將如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM