【发布时间】:2019-04-08 21:25:28
【问题描述】:
我有一个相当大的 1d numpy 数组 Xold,它具有给定的值。这些值应为 根据二维 numpy 数组 Y 指定的规则替换: 一个例子是
Xold=np.array([0,1,2,3,4])
Y=np.array([[0,0],[1,100],[3,300],[4,400],[2,200]])
只要 Xold 中的值与 Y[:,0] 中的值相同,Xnew 中的新值应该是 Y[:,1] 中的对应值。这是通过两个嵌套的 for 循环来完成的:
Xnew=np.zeros(len(Xold))
for i in range(len(Xold)):
for j in range(len(Y)):
if Xold[i]==Y[j,0]:
Xnew[i]=Y[j,1]
对于给定的示例,这会产生Xnew=[0,100,200,300,400]。
但是,对于大型数据集,此过程非常缓慢。有什么更快、更优雅的方式来完成这项任务?
【问题讨论】:
标签: python numpy for-loop numpy-slicing