【发布时间】:2015-03-25 13:30:11
【问题描述】:
我正在尝试在 numpy 中对两个大型四维数组进行排序。
我想根据第一个数组的轴 2 的值进行排序,并按相同的索引对第二个数组进行排序。两个数组的所有其他轴应保持相同的顺序。
下面的代码做我想要的,但依赖于 python 中的循环,所以它很慢。数组非常大,因此出于性能原因,我真的很想使用已编译的 numpy 操作来使其工作。或者其他一些方法来编译这段代码(Cython?)。
import numpy as np
data = np.random.rand(10,6,4,1)
data2 = np.random.rand(10,6,4,3)
print data[0,0,:,:]
print data2[0,0,:,:]
for n in range(data.shape[0]):
for m in range(data.shape[1]):
sort_ids = np.argsort(data[n,m,:,0])
data[n,m,:,:] = data[n,m,sort_ids,:]
data2[n,m,:,:] = data2[n,m,sort_ids,:]
print data[0,0,:,:]
print data2[0,0,:,:]
【问题讨论】:
标签: python performance sorting numpy