2015-09-26 79 views
4

我遍历numpy数组通过每个元素应用一个函数,并将新值添加到列表,以便我可以保留原始数据。遍历numpy数组来填充python列表

问题是:它有点慢。

有没有更好的方法来做到这一点(不改变原始数组)?

import numpy as np 
original_data = np.arange(0,16000, dtype = np.float32) 
new_data = [i/max(original_data) for i in original_data] 
print('done') 

回答

2

你可以简单地做:

new_data = original_data/original_data.max() 

numpy的已经执行此操作逐个元件。

在你的代码中有缓慢的额外来源:每次调用max(original_data)将会出现过来自original_data所有元素的迭代器,使你的成本成正比O(n^2)

+1

非常感谢。这种方法将有助于很多。 –