使用numpy loadtxt读取多个CSV,for循环不工作

kwvwclae  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(132)

我尝试使用for循环在多个CSV文件中输出数据,代码如下:

import numpy as np

# read multiple files

def show_datasets(filenames):
    n = len(filenames)
    data=[]
    for i in range(0, n):
        data = np.loadtxt(filenames[i], delimiter=',', dtype=float)
        return data, i

print(show_datasets(['data1.csv', 'data2.csv', 'data3.csv']))

但是它只显示了第一个CSV文件的数据集,我认为循环在i=0结束,因为返回值显示了data1.csv的数据,然后是0,但我不明白为什么它不通过i = 1,i=2或显示CSV文件的其余数据?
我得到的是:

(array([[ 7.98631, 16.82952, 19.65165],
   [ 7.1446 , 10.41674,  3.81853],
   [ 7.48549, 14.61958,  8.87193],
   [ 8.66521, 14.14244, 10.10248],
   [14.80968, 12.82048, 13.41792]]), 0)

我想要的是:

(array([[ 7.98631, 16.82952, 19.65165],
   [ 7.1446 , 10.41674,  3.81853],
   [ 7.48549, 14.61958,  8.87193],
   [ 8.66521, 14.14244, 10.10248],
   [14.80968, 12.82048, 13.41792]]), 0)
(array([[ 12.65900,13.22477,8.94481],
   [ 7.11298,1.99820,8.49168],
   [ 0.25181,9.79979,13.62024],
   [ 8.66521, 14.14244, 10.10248],
   [1.98336,1.42358,9.92036]]), 1)
(array([[ 7.98631, 16.82952, 19.65165],
   [ 14.12714,8.03384,15.76423],
   [ 13.78446,8.92194,15.08250],
   [ 15.79836,6.28136,7.43691],
   [17.93699,0.01700,10.15189]]), 2)
pgvzfuti

pgvzfuti1#

  • return语句位于loop中,这会导致函数exit并返回列表中第一个CSV文件的数据。
import numpy as np

def show_datasets(filenames):
    n = len(filenames)
    data = []
    for i in range(n):
        data.append(np.loadtxt(filenames[i], delimiter=',', dtype=float))
    return data

# Pass your datasets as required
print(show_datasets(['data1.csv', 'data2.csv', 'data3.csv']))
  • 创建了一个名为data的空列表来存储加载的数据集,并使用append方法将每个加载的数据集添加到数据列表中。
  • return语句移到循环之外,以确保在返回最终结果之前加载所有数据集。
mi7gmzs6

mi7gmzs62#

return语句中断loop并退出函数。

import numpy as np

# read multiple files

def show_datasets(filenames):
    n = len(filenames)
    data=[]
    for i in range(0, n):
        #first element is csv data list, and 2nd element is index
        single_file_data = [np.loadtxt(filenames[i], delimiter=',', dtype=float),i] 
        data.append(single_file_data)
    return data

print(show_datasets(['data1.csv', 'data2.csv', 'data3.csv']))

你的数据是一个在每个索引处包含数组的列表。Array的第一个元素将是csv文件数据,第二个元素将是索引。使用append函数将数据添加到data列表。

相关问题