我有一个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)。