在循环中构建数组

时间:2014-04-06 22:04:30

标签: python numpy

我正在编写一个Python程序,每次以10个点为单位导入1000个数据点。从每个10个数据点的块中找到该组的最大值,然后程序循环到接下来的10个数据点并继续。所有这一切都很好,我只需要构建一个数组来保存每个循环创建一次的最大数据点,所以我可以稍后绘制它们。如何在循环中创建这个数组,这就是我所拥有的:

for count in range(self.files/self.block_length):
    RSS = scipy.fromfile(self.hfile2, dtype=self.datatype, count=self.block_length)
    MaxRSS = np.max(RSS)#Takes the greatest value in the array of size defined by block_length

这里MaxRSS可以很好地保存到文件或打印到屏幕,因为程序循环;但是,在循环结束时它只保留最后一个值,我需要一些东西来保存所有找到的Max值

2 个答案:

答案 0 :(得分:2)

不是一次循环10个点,如果你有足够的内存来将整个数据集读入数组,那么你可以将数组重新整形为每行10个值的2D数组,并取{{1沿着行:

max

答案 1 :(得分:1)

不确定这是否能满足您的需求...假设您的for循环将1000个点正确分解为10个块(我在示例中没有看到),创建一个数组中的数组,您需要使MaxRSS成为一个列表,然后将内容添加到其中:

MaxRSS = []
for count in range(self.files/self.block_length):
    RSS = scipy.fromfile(self.hfile2, dtype=self.datatype, count=self.block_length)
    MaxRSS.append(np.max(RSS))

修改

这不是Numpy,但也许会有所帮助:

import random

data = []
for _ in range(100):
    data.append(random.randint(1, 100))
# Ok, a is populated with 100 integers. 

# Grab chunks of 10 "points"
chunks=[data[x:x+10] for x in xrange(0, len(data), 10)]

# Initialization for the example done. Now, to your max list:
maxes = []
for chunk in chunks:
    maxes.append(max(chunk))
    print "The max number in chunk %s was: %s" % (chunk, maxes[-1])
print maxes #prints out the 10 max values of the 10 arrays of 10 numbers