我试图获得非常大的数组(len> 1000000)的数据切片(基于数组值)。例子请参阅下一个Python代码我想要在纯Python做:numpy中是否有函数比较类似numpy.where函数的多维数组?
vector=[1,2,3,4,5,6,7,8,9,10]
start=[1,4,9] # start and end lists have the same length
end=[2,7,9]
output=[[]]*len(start)
for indx1 in range(len(start)):
temp=[]
for indx2 in range(len(vector)):
if ((vector[indx2]>=start[indx1]) and (vector[indx2]<=end[indx1])):
temp.append(vector[indx2])
output[indx1]=temp
print output
矢量列表中有正常25E + 6的元素,同时开始和结束的名单有像1E6的元素,这就是为什么在纯粹做这个python非常慢。
你知道为什么要用numpy避免for循环来解决这个问题吗?
感谢您的时间
将'vector'排序?如果不是,将它分类会受伤,还是需要保持原始顺序? – 2012-03-16 23:07:20
'start'和'end'定义的间隔是否被排序并且不重叠? – 2012-03-16 23:10:25
矢量的顺序必须保持。 – Memolo 2012-03-16 23:23:05