我有一个array_data
包含 ~10**8 个元素的一维数组。
我有第二个数组array_index
,它指定用于切片的边界array_data
索引。
以下是 and 的最小、完整和可验证的array_data
示例array_index
:
import numpy as np
#Create data
array_data = np.arange(100)
#Randomly create indices
array_index = np.sort(np.random.randint(100, size=(10,2)))
#For each randomly created index, slice the array
array_sliced = [array_data[index[0]:index[1]]) for index in array_index]
#Now data is sliced, perform operation on the sliced data. For example:
val = []
for slice in array_sliced:
val.append(np.nanmean(slice))
问题:最好的切片方式是什么array_data
,以便我可以在切片数组array_index
上axis=1
执行另一项任务(例如min
, max
, mean
)?
我目前的解决方案使用列表理解和转换回 numpy 数组。这种方法看起来笨重且缓慢:
>>> np.array([np.nanmean(array_data[index[0]:index[1]]) for index in array_index], dtype=np.float64)
编辑:添加了最小、完整和可验证的示例(适用于 python 2.7)。