为每个循环创建新的numpy数组

时间:2016-08-01 07:43:32

标签: python numpy

我需要在for循环中每次创建一个新的数据集变量 使用.append如下所示不会工作。注意每个numpy数组类型变量的形状是(56,25000)

ps=[1,2,3,4]

for subj in ps:

    datapath = '/home/subj%d' % (subj) 

    mydata.append = np.genfromtext(datapath, mydatafile)

所以基本上我需要她的4个mydata实例,每个实例的形状为(56,25000),或者为每个循环创建一个新的数据集变量,例如mydata1,...,mydata4 ....但是.append不会做的。我可以用

做到这一点
if ps==1: mydata1 = np.genfromtext(datapath, mydatafile)

if ps==2: mydata2 = np.genfromtext(datapath, mydatafile)

等但是我有很多ps的实例,所以循环它会很好

谢谢!

1 个答案:

答案 0 :(得分:2)

如果没有更多代码,很难说,但.append通常是一种方法,应该像这样调用:

some_container.append(your_object)

注意我还要将mydata初始化为空列表 - 您不会显示如何初始化它(如果您这样做的话),所以请注意:

mydata = []
for subj in [1,2,3,4]:

    datapath = '/home/subj%d' % (subj) 

    mydata.append( np.genfromtext(datapath, mydatafile) )

然后,mydata将成为numpy数组的4元素Python列表。

还有numpy的vstack()concatenate()功能可能值得一试。

最后,只想指出

ps = [1,2,3,4]
for sub in ps:
    ...

可以写成(如上所述):

for sub in [1,2,3,4]:
    ...

但也作为:

for sub in range(1,5):
    ...

# or

for sub in range(4):
    datapath = '/home/subj%d' % (subj + 1)
    ...