我正在编写一个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值
答案 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