Python 读取多个csv文件(大小为mxm)并作为n维数组加载(大小为nxmxm)(不连接)

Python 读取多个csv文件(大小为mxm)并作为n维数组加载(大小为nxmxm)(不连接),python,pandas,csv,numpy,Python,Pandas,Csv,Numpy,我正在开发一个需要将大量csv文件(数千个)加载到阵列中的程序 csv文件的尺寸为45x100,我想创建一个尺寸为nx45x100的三维阵列。现在,我使用pd.read_csv()加载每个csv文件,然后使用np.array()将每个文件转换为数组。然后,我使用np.array(data_0,data_1,…,data_n)创建了一个3d数组,我得到了一个具有所需维度的3d数组 虽然它能工作,但非常乏味。是否有任何方法可以在不单独读取和处理每个csv文件的情况下完成此操作 #this is

我正在开发一个需要将大量csv文件(数千个)加载到阵列中的程序

csv文件的尺寸为45x100,我想创建一个尺寸为nx45x100的三维阵列。现在,我使用pd.read_csv()加载每个csv文件,然后使用np.array()将每个文件转换为数组。然后,我使用np.array(data_0,data_1,…,data_n)创建了一个3d数组,我得到了一个具有所需维度的3d数组

虽然它能工作,但非常乏味。是否有任何方法可以在不单独读取和处理每个csv文件的情况下完成此操作

   #this is my current code
   import numpy as np
   import pandas as pd
   from pandas import Series, DataFrame

   mBGS5L = pd.read_csv("strain5.csv") #45x100 
   mBGS8L = pd.read_csv("strain8.csv")
   mBGS10L = pd.read_csv("strain10.csv")

   mBGS5L_ = np.array(mBGS5L)
   mBGS8L_ = np.array(mBGS8L)
   mBGS10L_ = np.array(mBGS10L)

   mBGS = np.array([mBGS5L_,mBGS8L_,mBGS10L_])
   #to which mBGS.shape returns a 3x45x100 array'''
注意:我已经检查了将多个csv文件加载到一个数据帧时的其他stackoverflow链接,从中我了解了glob,以获得我需要的所有csv文件的列表。但我的问题是,使用glob并连接csv文件会返回一个列表,而不是一个3d数组——我无法将其转换为numpy数组,因为它会返回一个错误

   from glob import glob
   strain = glob("strain*.csv")
   df= [pd.read_csv(f) for f in strain]
   df_ = np.asarray(df)
   #this returns an error: cannot copy sequence with size 45 to array axis with dimension 30

任何帮助都将不胜感激。谢谢

首先,您需要将
数据帧
转换为mxm阵列。请参阅下面的代码

from glob import glob
import numpy as np
strain = glob("strain*.csv")
df = [pd.read_csv(f).values for f in strain]
df_ = np.asarray(df)

您确定所有文件都生成相同的形状数组吗?是的,它们都是45x100数组。如果我有多组数据组,即应变1=glob(“应变1*.csv”)、应变2=glob(“应变*.csv”),则可以使用此代码?我想创建一个3d数组,其中包含来自这两个数据集的所有csv文件。谢谢:)