Python:在for循环中追加数组列

问题描述 投票:1回答:1

我有以下问题。

我有几个参数,所有整数或浮点数,我想将它们堆叠在一个for循环中。我试过不同的想法:

for i in range(0,19000):
    parameterCombinationsResults = np.array([]).reshape(0,12)
    parameterCombinationsResults = np.r_[parameterCombinationsResults,[[self.cR,self.fD,s[0]+1,s[1]+1,self.cI,self.cO,self.fI,self.fO,maxJC,maxSensitivity,maxSpecifity,numberOfCells]]]

问题是,在每次循环迭代中,旧值也会堆叠在一起,因此我在每个循环中都有旧结果+新结果,这将导致数组包含数千个旧结果的副本。有没有像列表附加的方式。我知道数组是不可变的,但也许有一个解决方法?

最后,我想将所有这些参数组合结果保存在csv中。它不必是数组我也会对列表方法感兴趣,重要的是将它们保存在csv中并且它必须非常快。

python arrays numpy
1个回答
1
投票

有一个叫做vstack的numpy方法。这是numpy网站上的一个例子

a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
np.vstack((a,b))
array([[1, 2, 3],[2, 3, 4]])

https://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html

将其应用于您的代码会使其看起来像

pcr_stack = parameterCombinationsResults  #need to start one for vstack to work

for i in range(0,19000):
    pcr_stack = vstack([pcr_stack,[self.cR,self.fD,s[0]+1,s[1]+1,self.cI,self.cO,self.fI,self.fO,maxJC,maxSensitivity,maxSpecifity,numberOfCells]])
© www.soinside.com 2019 - 2024. All rights reserved.