NumPy 依赖于其他行/列的行操作

问题描述 投票:0回答:1

问题

我试图避免 NumPy 中的 for 循环(这非常混乱并且显然会限制性能)。我的挑战是每一行的操作都依赖于其他行。那就是:

我有一个(非常大的)8 列数组。在每一行中,我需要找到第一列中的值最接近(与当前行的第一列)的 2(或任意数量 N)行的索引,同时确保第二列和第四列中的值是相同的(所有 3 行)。

所需输出

因此,我最终应该得到一个与我的大初始数组长度相同的数组 2 (或 N),其中每行包含“主”数组中满足上述条件的其他行的索引。

当前的尝试

在我原来的 for 循环中,我正在广播,因为我已经将数组过滤得足够小,可以这样做。

我现在的尝试如下:

def query_trks(self, FULL, trk, t, v, N):
    filt = np.where((FULL[:,1]==t, FULL[:,4]==v))[0]
    trks = FULL[filt, 0]
    idxs = np.abs(trks[:, None] - trks).argsort(axis=0)[:N]
    return idxs.T.astype(int)        

def create_idxs(self, DATA):
    self.query_trks(DATA, DATA[:,0], DATA[:,1], DATA[:,4], 3)
    

我想我可能仍然能够广播,但我的问题基本上是为“主”数组的每一行获取一个过滤数组(针对第二列和第四列)。现在,由于按元素比较,因此返回了数组的整个长度。

如何获得想要的输出?至少我走在正确的轨道上吗?

提前致谢!

编辑: 下面是“主”数组的最小化示例,其中最右边的列描述了所需输出的模式。

1.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 2.39604e+03 2.39604e+03 0.00000e+00 1.59155e-02 0.00000e+00 [27, 54]
1.00000e+00 1.00000e+00 -1.63687e+07 0.00000e+00 2.39604e+03 2.39753e+03 0.00000e+00 1.59280e-02 2.03148e-06 [29, 55]
1.00000e+00 2.00000e+00 -1.63639e+07 0.00000e+00 2.39604e+03 2.40051e+03 0.00000e+00 1.59406e-02 6.77694e-07 [30, 56]
1.00000e+00 3.00000e+00 -1.63567e+07 0.00000e+00 2.39604e+03 2.40497e+03 0.00000e+00 1.59532e-02 3.39114e-07 [31, 57]
1.00000e+00 4.00000e+00 -1.63471e+07 0.00000e+00 2.39604e+03 2.41093e+03 0.00000e+00 1.59658e-02 2.03629e-07   ...
1.00000e+00 5.00000e+00 -1.63350e+07 0.00000e+00 2.39604e+03 2.41839e+03 0.00000e+00 1.59784e-02 1.35860e-07
1.00000e+00 6.00000e+00 -1.63206e+07 0.00000e+00 2.39604e+03 2.42735e+03 0.00000e+00 1.59910e-02 9.71192e-08
1.00000e+00 7.00000e+00 -1.63036e+07 0.00000e+00 2.39604e+03 2.43783e+03 0.00000e+00 1.60036e-02 7.28968e-08
1.00000e+00 8.00000e+00 -1.62842e+07 0.00000e+00 2.39604e+03 2.44982e+03 0.00000e+00 1.60162e-02 5.67421e-08
1.00000e+00 9.00000e+00 -1.62622e+07 0.00000e+00 2.39604e+03 2.46335e+03 0.00000e+00 1.60288e-02 4.54294e-08
1.00000e+00 1.00000e+01 -1.62376e+07 0.00000e+00 2.39604e+03 2.47842e+03 0.00000e+00 1.60415e-02 3.71987e-08
1.00000e+00 1.10000e+01 -1.62104e+07 0.00000e+00 2.39604e+03 2.49505e+03 0.00000e+00 1.60541e-02 3.10231e-08
1.00000e+00 1.20000e+01 -1.61806e+07 0.00000e+00 2.39604e+03 2.51325e+03 0.00000e+00 1.60668e-02 2.62708e-08
1.00000e+00 1.30000e+01 -1.61481e+07 0.00000e+00 2.39604e+03 2.53305e+03 0.00000e+00 1.60795e-02 2.25354e-08
1.00000e+00 1.40000e+01 -1.61127e+07 0.00000e+00 2.39604e+03 2.55445e+03 0.00000e+00 1.60922e-02 1.95458e-08
1.00000e+00 1.50000e+01 -1.60746e+07 0.00000e+00 2.39604e+03 2.57748e+03 0.00000e+00 1.61049e-02 1.71157e-08
1.00000e+00 1.60000e+01 -1.60336e+07 0.00000e+00 2.39604e+03 2.60216e+03 0.00000e+00 1.61176e-02 1.51137e-08
1.00000e+00 1.70000e+01 -1.59895e+07 0.00000e+00 2.39604e+03 2.62851e+03 0.00000e+00 1.61303e-02 1.34446e-08
1.00000e+00 1.80000e+01 -1.59425e+07 0.00000e+00 2.39604e+03 2.65658e+03 0.00000e+00 1.61430e-02 1.20385e-08
1.00000e+00 1.90000e+01 -1.58923e+07 0.00000e+00 2.39604e+03 2.68637e+03 0.00000e+00 1.61557e-02 1.08427e-08
1.00000e+00 2.00000e+01 -1.58389e+07 0.00000e+00 2.39604e+03 2.71794e+03 0.00000e+00 1.61685e-02 9.81735e-09
1.00000e+00 2.10000e+01 -1.57822e+07 0.00000e+00 2.39604e+03 2.75130e+03 0.00000e+00 1.61812e-02 8.93139e-09
1.00000e+00 2.20000e+01 -1.57220e+07 0.00000e+00 2.39604e+03 2.78651e+03 0.00000e+00 1.61940e-02 8.16063e-09
1.00000e+00 2.30000e+01 -1.56584e+07 0.00000e+00 2.39604e+03 2.82360e+03 0.00000e+00 1.62068e-02 7.48589e-09
1.00000e+00 2.40000e+01 -1.55911e+07 0.00000e+00 2.39604e+03 2.86261e+03 0.00000e+00 1.62196e-02 6.89183e-09
1.00000e+00 2.50000e+01 -1.55200e+07 0.00000e+00 2.39604e+03 2.90361e+03 0.00000e+00 1.62324e-02 6.36604e-09
1.00000e+00 2.50000e+01 nan nan 2.39604e+03 nan nan nan 6.36604e-09
2.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 2.39604e+03 1.69426e+03 1.69426e+03 1.59155e-02 0.00000e+00 [0, 54]
2.00000e+00 1.00000e+00 -1.63694e+07 1.69426e+03 2.39604e+03 1.69575e+03 1.69426e+03 1.59280e-02 2.03148e-06 [1, 55]
2.00000e+00 2.00000e+00 -1.63660e+07 5.08278e+03 2.39604e+03 1.69872e+03 1.69426e+03 1.59406e-02 6.77694e-07 [2, 56]
2.00000e+00 3.00000e+00 -1.63609e+07 1.01656e+04 2.39604e+03 1.70319e+03 1.69426e+03 1.59532e-02 3.39114e-07 [3, 57]
2.00000e+00 4.00000e+00 -1.63541e+07 1.69426e+04 2.39604e+03 1.70914e+03 1.69425e+03 1.59658e-02 2.03629e-07   ...
2.00000e+00 5.00000e+00 -1.63456e+07 2.54139e+04 2.39604e+03 1.71659e+03 1.69425e+03 1.59784e-02 1.35860e-07
2.00000e+00 6.00000e+00 -1.63353e+07 3.55794e+04 2.39604e+03 1.72554e+03 1.69423e+03 1.59910e-02 9.71192e-08
2.00000e+00 7.00000e+00 -1.63233e+07 4.74391e+04 2.39604e+03 1.73600e+03 1.69421e+03 1.60036e-02 7.28968e-08
2.00000e+00 8.00000e+00 -1.63094e+07 6.09929e+04 2.39604e+03 1.74797e+03 1.69417e+03 1.60162e-02 5.67421e-08
2.00000e+00 9.00000e+00 -1.62937e+07 7.62407e+04 2.39604e+03 1.76145e+03 1.69412e+03 1.60288e-02 4.54294e-08
2.00000e+00 1.00000e+01 -1.62762e+07 9.31823e+04 2.39604e+03 1.77647e+03 1.69405e+03 1.60415e-02 3.71987e-08
2.00000e+00 1.10000e+01 -1.62568e+07 1.11817e+05 2.39604e+03 1.79302e+03 1.69396e+03 1.60541e-02 3.10231e-08
2.00000e+00 1.20000e+01 -1.62353e+07 1.32146e+05 2.39604e+03 1.81111e+03 1.69383e+03 1.60668e-02 2.62708e-08
2.00000e+00 1.30000e+01 -1.62119e+07 1.54167e+05 2.39604e+03 1.83077e+03 1.69367e+03 1.60795e-02 2.25354e-08
2.00000e+00 1.40000e+01 -1.61864e+07 1.77879e+05 2.39604e+03 1.85200e+03 1.69347e+03 1.60922e-02 1.95458e-08
2.00000e+00 1.50000e+01 -1.61588e+07 2.03283e+05 2.39604e+03 1.87481e+03 1.69322e+03 1.61049e-02 1.71157e-08
2.00000e+00 1.60000e+01 -1.61290e+07 2.30377e+05 2.39604e+03 1.89923e+03 1.69291e+03 1.61176e-02 1.51137e-08
2.00000e+00 1.70000e+01 -1.60970e+07 2.59160e+05 2.39604e+03 1.92527e+03 1.69254e+03 1.61303e-02 1.34446e-08
2.00000e+00 1.80000e+01 -1.60626e+07 2.89630e+05 2.39604e+03 1.95295e+03 1.69210e+03 1.61430e-02 1.20385e-08
2.00000e+00 1.90000e+01 -1.60257e+07 3.21785e+05 2.39604e+03 1.98229e+03 1.69157e+03 1.61557e-02 1.08427e-08
2.00000e+00 2.00000e+01 -1.59864e+07 3.55622e+05 2.39604e+03 2.01331e+03 1.69095e+03 1.61685e-02 9.81735e-09
2.00000e+00 2.10000e+01 -1.59445e+07 3.91140e+05 2.39604e+03 2.04604e+03 1.69022e+03 1.61812e-02 8.93139e-09
2.00000e+00 2.20000e+01 -1.58998e+07 4.28334e+05 2.39604e+03 2.08050e+03 1.68937e+03 1.61940e-02 8.16063e-09
2.00000e+00 2.30000e+01 -1.58524e+07 4.67201e+05 2.39604e+03 2.11672e+03 1.68840e+03 1.62068e-02 7.48589e-09
2.00000e+00 2.40000e+01 -1.58021e+07 5.07736e+05 2.39604e+03 2.15474e+03 1.68728e+03 1.62196e-02 6.89183e-09
2.00000e+00 2.50000e+01 -1.57487e+07 5.49934e+05 2.39604e+03 2.19459e+03 1.68600e+03 1.62324e-02 6.36604e-09
2.00000e+00 2.50000e+01 nan nan 2.39604e+03 nan nan nan 6.36604e-09
3.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 2.39604e+03 1.46715e-13 2.39604e+03 1.59155e-02 0.00000e+00
3.00000e+00 1.00000e+00 -1.63711e+07 2.39604e+03 2.39604e+03 1.48721e+00 2.39604e+03 1.59280e-02 2.03148e-06
3.00000e+00 2.00000e+00 -1.63711e+07 7.18813e+03 2.39604e+03 4.46162e+00 2.39604e+03 1.59406e-02 6.77694e-07
3.00000e+00 3.00000e+00 -1.63711e+07 1.43763e+04 2.39604e+03 8.92324e+00 2.39604e+03 1.59532e-02 3.39114e-07
3.00000e+00 4.00000e+00 -1.63710e+07 2.39604e+04 2.39604e+03 1.48721e+01 2.39604e+03 1.59658e-02 2.03629e-07
3.00000e+00 5.00000e+00 -1.63710e+07 3.59407e+04 2.39604e+03 2.23081e+01 2.39603e+03 1.59784e-02 1.35860e-07
3.00000e+00 6.00000e+00 -1.63709e+07 5.03169e+04 2.39604e+03 3.12314e+01 2.39601e+03 1.59910e-02 9.71191e-08
3.00000e+00 7.00000e+00 -1.63707e+07 6.70890e+04 2.39604e+03 4.16419e+01 2.39597e+03 1.60036e-02 7.28965e-08
3.00000e+00 8.00000e+00 -1.63704e+07 8.62570e+04 2.39604e+03 5.35398e+01 2.39593e+03 1.60162e-02 5.67417e-08
3.00000e+00 9.00000e+00 -1.63700e+07 1.07821e+05 2.39604e+03 6.69252e+01 2.39585e+03 1.60288e-02 4.54288e-08
3.00000e+00 1.00000e+01 -1.63694e+07 1.31780e+05 2.39604e+03 8.17983e+01 2.39576e+03 1.60415e-02 3.71979e-08
3.00000e+00 1.10000e+01 -1.63686e+07 1.58134e+05 2.39604e+03 9.81593e+01 2.39563e+03 1.60541e-02 3.10222e-08
3.00000e+00 1.20000e+01 -1.63675e+07 1.86882e+05 2.39604e+03 1.16009e+02 2.39545e+03 1.60668e-02 2.62696e-08
3.00000e+00 1.30000e+01 -1.63661e+07 2.18025e+05 2.39604e+03 1.35347e+02 2.39523e+03 1.60795e-02 2.25338e-08
3.00000e+00 1.40000e+01 -1.63644e+07 2.51560e+05 2.39604e+03 1.56175e+02 2.39495e+03 1.60922e-02 1.95439e-08
3.00000e+00 1.50000e+01 -1.63622e+07 2.87487e+05 2.39604e+03 1.78493e+02 2.39461e+03 1.61049e-02 1.71135e-08
3.00000e+00 1.60000e+01 -1.63595e+07 3.25804e+05 2.39604e+03 2.02303e+02 2.39419e+03 1.61176e-02 1.51111e-08
3.00000e+00 1.70000e+01 -1.63563e+07 3.66509e+05 2.39604e+03 2.27607e+02 2.39369e+03 1.61303e-02 1.34416e-08
3.00000e+00 1.80000e+01 -1.63525e+07 4.09601e+05 2.39604e+03 2.54404e+02 2.39309e+03 1.61430e-02 1.20350e-08
3.00000e+00 1.90000e+01 -1.63479e+07 4.55077e+05 2.39604e+03 2.82699e+02 2.39238e+03 1.61557e-02 1.08388e-08
3.00000e+00 2.00000e+01 -1.63425e+07 5.02932e+05 2.39604e+03 3.12493e+02 2.39155e+03 1.61685e-02 9.81292e-09
3.00000e+00 2.10000e+01 -1.63363e+07 5.53165e+05 2.39604e+03 3.43789e+02 2.39059e+03 1.61812e-02 8.92644e-09
3.00000e+00 2.20000e+01 -1.63291e+07 6.05770e+05 2.39604e+03 3.76590e+02 2.38948e+03 1.61940e-02 8.15512e-09
3.00000e+00 2.30000e+01 -1.63208e+07 6.60743e+05 2.39604e+03 4.10901e+02 2.38820e+03 1.62068e-02 7.47980e-09
3.00000e+00 2.40000e+01 -1.63114e+07 7.18077e+05 2.39604e+03 4.46726e+02 2.38675e+03 1.62196e-02 6.88512e-09
3.00000e+00 2.50000e+01 -1.63007e+07 7.77767e+05 2.39604e+03 4.84070e+02 2.38511e+03 1.62324e-02 6.35869e-09
3.00000e+00 2.50000e+01 nan nan 2.39604e+03 nan nan nan 6.35869e-09
4.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 2.39604e+03 -1.69426e+03 1.69426e+03 1.59155e-02 0.00000e+00
4.00000e+00 1.00000e+00 -1.63728e+07 1.69426e+03 2.39604e+03 -1.69277e+03 1.69426e+03 1.59280e-02 2.03148e-06
4.00000e+00 2.00000e+00 -1.63762e+07 5.08278e+03 2.39604e+03 -1.68980e+03 1.69426e+03 1.59406e-02 6.77694e-07
4.00000e+00 3.00000e+00 -1.63812e+07 1.01656e+04 2.39604e+03 -1.68534e+03 1.69426e+03 1.59532e-02 3.39114e-07
4.00000e+00 4.00000e+00 -1.63880e+07 1.69426e+04 2.39604e+03 -1.67940e+03 1.69425e+03 1.59658e-02 2.03629e-07
4.00000e+00 5.00000e+00 -1.63964e+07 2.54139e+04 2.39604e+03 -1.67198e+03 1.69425e+03 1.59784e-02 1.35860e-07
4.00000e+00 6.00000e+00 -1.64065e+07 3.55794e+04 2.39604e+03 -1.66308e+03 1.69423e+03 1.59910e-02 9.71192e-08
4.00000e+00 7.00000e+00 -1.64181e+07 4.74391e+04 2.39604e+03 -1.65272e+03 1.69421e+03 1.60036e-02 7.28968e-08
4.00000e+00 8.00000e+00 -1.64314e+07 6.09929e+04 2.39604e+03 -1.64089e+03 1.69418e+03 1.60162e-02 5.67421e-08
4.00000e+00 9.00000e+00 -1.64462e+07 7.62407e+04 2.39604e+03 -1.62760e+03 1.69413e+03 1.60288e-02 4.54294e-08
4.00000e+00 1.00000e+01 -1.64626e+07 9.31823e+04 2.39604e+03 -1.61286e+03 1.69406e+03 1.60415e-02 3.71987e-08
4.00000e+00 1.10000e+01 -1.64804e+07 1.11817e+05 2.39604e+03 -1.59669e+03 1.69397e+03 1.60541e-02 3.10232e-08
4.00000e+00 1.20000e+01 -1.64997e+07 1.32146e+05 2.39604e+03 -1.57908e+03 1.69385e+03 1.60668e-02 2.62709e-08
4.00000e+00 1.30000e+01 -1.65203e+07 1.54167e+05 2.39604e+03 -1.56005e+03 1.69369e+03 1.60795e-02 2.25354e-08
4.00000e+00 1.40000e+01 -1.65423e+07 1.77880e+05 2.39604e+03 -1.53960e+03 1.69350e+03 1.60922e-02 1.95458e-08
4.00000e+00 1.50000e+01 -1.65656e+07 2.03284e+05 2.39604e+03 -1.51776e+03 1.69327e+03 1.61049e-02 1.71158e-08
4.00000e+00 1.60000e+01 -1.65900e+07 2.30379e+05 2.39604e+03 -1.49452e+03 1.69298e+03 1.61176e-02 1.51138e-08
4.00000e+00 1.70000e+01 -1.66157e+07 2.59162e+05 2.39604e+03 -1.46991e+03 1.69264e+03 1.61303e-02 1.34447e-08
4.00000e+00 1.80000e+01 -1.66424e+07 2.89634e+05 2.39604e+03 -1.44393e+03 1.69224e+03 1.61430e-02 1.20386e-08
4.00000e+00 1.90000e+01 -1.66700e+07 3.21791e+05 2.39604e+03 -1.41660e+03 1.69176e+03 1.61557e-02 1.08428e-08
4.00000e+00 2.00000e+01 -1.66987e+07 3.55631e+05 2.39604e+03 -1.38793e+03 1.69121e+03 1.61685e-02 9.81749e-09
4.00000e+00 2.10000e+01 -1.67281e+07 3.91153e+05 2.39604e+03 -1.35793e+03 1.69057e+03 1.61812e-02 8.93157e-09
4.00000e+00 2.20000e+01 -1.67583e+07 4.28354e+05 2.39604e+03 -1.32662e+03 1.68984e+03 1.61940e-02 8.16085e-09
4.00000e+00 2.30000e+01 -1.67892e+07 4.67230e+05 2.39604e+03 -1.29401e+03 1.68900e+03 1.62068e-02 7.48616e-09
4.00000e+00 2.40000e+01 -1.68207e+07 5.07777e+05 2.39604e+03 -1.26011e+03 1.68806e+03 1.62196e-02 6.89215e-09
4.00000e+00 2.50000e+01 -1.68526e+07 5.49992e+05 2.39604e+03 -1.22494e+03 1.68700e+03 1.62324e-02 6.36643e-09
4.00000e+00 2.50000e+01 nan nan 2.39604e+03 nan nan nan 6.36643e-09
5.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 2.39604e+03 -2.39604e+03 2.93431e-13 1.59155e-02 0.00000e+00
5.00000e+00 1.00000e+00 -1.63735e+07 2.93431e-13 2.39604e+03 -2.39456e+03 2.93431e-13 1.59280e-02 2.03148e-06
5.00000e+00 2.00000e+00 -1.63783e+07 8.80292e-13 2.39604e+03 -2.39158e+03 2.93431e-13 1.59406e-02 6.77694e-07
5.00000e+00 3.00000e+00 -1.63854e+07 1.76058e-12 2.39604e+03 -2.38713e+03 2.93430e-13 1.59532e-02 3.39114e-07
5.00000e+00 4.00000e+00 -1.63950e+07 2.93431e-12 2.39604e+03 -2.38119e+03 2.93430e-13 1.59658e-02 2.03629e-07
5.00000e+00 5.00000e+00 -1.64069e+07 4.40146e-12 2.39604e+03 -2.37377e+03 2.93429e-13 1.59784e-02 1.35860e-07
5.00000e+00 6.00000e+00 -1.64212e+07 6.16204e-12 2.39604e+03 -2.36489e+03 2.93426e-13 1.59910e-02 9.71192e-08
5.00000e+00 7.00000e+00 -1.64378e+07 8.21604e-12 2.39604e+03 -2.35454e+03 2.93422e-13 1.60036e-02 7.28968e-08
5.00000e+00 8.00000e+00 -1.64567e+07 1.05634e-11 2.39604e+03 -2.34274e+03 2.93416e-13 1.60162e-02 5.67421e-08
5.00000e+00 9.00000e+00 -1.64778e+07 1.32042e-11 2.39604e+03 -2.32949e+03 2.93408e-13 1.60288e-02 4.54294e-08
5.00000e+00 1.00000e+01 -1.65012e+07 1.61384e-11 2.39604e+03 -2.31481e+03 2.93396e-13 1.60415e-02 3.71987e-08
5.00000e+00 1.10000e+01 -1.65267e+07 1.93658e-11 2.39604e+03 -2.29871e+03 2.93380e-13 1.60541e-02 3.10232e-08
5.00000e+00 1.20000e+01 -1.65544e+07 2.28865e-11 2.39604e+03 -2.28120e+03 2.93360e-13 1.60668e-02 2.62709e-08
5.00000e+00 1.30000e+01 -1.65842e+07 2.67003e-11 2.39604e+03 -2.26229e+03 2.93334e-13 1.60795e-02 2.25354e-08
5.00000e+00 1.40000e+01 -1.66160e+07 3.08072e-11 2.39604e+03 -2.24200e+03 2.93301e-13 1.60922e-02 1.95458e-08
5.00000e+00 1.50000e+01 -1.66498e+07 3.52071e-11 2.39604e+03 -2.22035e+03 2.93261e-13 1.61049e-02 1.71158e-08
5.00000e+00 1.60000e+01 -1.66855e+07 3.98996e-11 2.39604e+03 -2.19734e+03 2.93212e-13 1.61176e-02 1.51138e-08
5.00000e+00 1.70000e+01 -1.67231e+07 4.48847e-11 2.39604e+03 -2.17300e+03 2.93154e-13 1.61303e-02 1.34447e-08
5.00000e+00 1.80000e+01 -1.67624e+07 5.01621e-11 2.39604e+03 -2.14735e+03 2.93085e-13 1.61430e-02 1.20386e-08
5.00000e+00 1.90000e+01 -1.68035e+07 5.57315e-11 2.39604e+03 -2.12040e+03 2.93005e-13 1.61557e-02 1.08428e-08
5.00000e+00 2.00000e+01 -1.68462e+07 6.15925e-11 2.39604e+03 -2.09216e+03 2.92911e-13 1.61685e-02 9.81749e-09
5.00000e+00 2.10000e+01 -1.68904e+07 6.77448e-11 2.39604e+03 -2.06267e+03 2.92803e-13 1.61812e-02 8.93157e-09
5.00000e+00 2.20000e+01 -1.69361e+07 7.41878e-11 2.39604e+03 -2.03193e+03 2.92680e-13 1.61940e-02 8.16085e-09
5.00000e+00 2.30000e+01 -1.69832e+07 8.09211e-11 2.39604e+03 -1.99997e+03 2.92540e-13 1.62068e-02 7.48616e-09
5.00000e+00 2.40000e+01 -1.70316e+07 8.79439e-11 2.39604e+03 -1.96680e+03 2.92382e-13 1.62196e-02 6.89215e-09
5.00000e+00 2.50000e+01 -1.70812e+07 9.52557e-11 2.39604e+03 -1.93245e+03 2.92204e-13 1.62324e-02 6.36643e-09
5.00000e+00 2.50000e+01 nan nan 2.39604e+03 nan nan nan 6.36643e-09
6.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 7.32003e+03 7.32003e+03 0.00000e+00 1.59155e-02 0.00000e+00 [162, 189]
6.00000e+00 1.00000e+00 -1.63638e+07 0.00000e+00 7.32003e+03 7.32152e+03 0.00000e+00 1.59280e-02 6.64958e-07 [163, 190]
6.00000e+00 2.00000e+00 -1.63491e+07 0.00000e+00 7.32003e+03 7.32449e+03 0.00000e+00 1.59406e-02 2.21828e-07 [164, 191]
6.00000e+00 3.00000e+00 -1.63271e+07 0.00000e+00 7.32003e+03 7.32897e+03 0.00000e+00 1.59532e-02 1.11001e-07 [165, 192]
6.00000e+00 4.00000e+00 -1.62978e+07 0.00000e+00 7.32003e+03 7.33495e+03 0.00000e+00 1.59658e-02 6.66533e-08     ...
6.00000e+00 5.00000e+00 -1.62612e+07 0.00000e+00 7.32003e+03 7.34245e+03 0.00000e+00 1.59784e-02 4.44706e-08
6.00000e+00 6.00000e+00 -1.62172e+07 0.00000e+00 7.32003e+03 7.35149e+03 0.00000e+00 1.59910e-02 3.17897e-08
6.00000e+00 7.00000e+00 -1.61657e+07 0.00000e+00 7.32003e+03 7.36210e+03 0.00000e+00 1.60036e-02 2.38611e-08
6.00000e+00 8.00000e+00 -1.61069e+07 0.00000e+00 7.32003e+03 7.37431e+03 0.00000e+00 1.60162e-02 1.85732e-08
6.00000e+00 9.00000e+00 -1.60406e+07 0.00000e+00 7.32003e+03 7.38813e+03 0.00000e+00 1.60288e-02 1.48703e-08
6.00000e+00 1.00000e+01 -1.59668e+07 0.00000e+00 7.32003e+03 7.40362e+03 0.00000e+00 1.60415e-02 1.21761e-08
6.00000e+00 1.10000e+01 -1.58854e+07 0.00000e+00 7.32003e+03 7.42082e+03 0.00000e+00 1.60541e-02 1.01547e-08
6.00000e+00 1.20000e+01 -1.57965e+07 0.00000e+00 7.32003e+03 7.43978e+03 0.00000e+00 1.60668e-02 8.59916e-09
6.00000e+00 1.30000e+01 -1.56999e+07 0.00000e+00 7.32003e+03 7.46054e+03 0.00000e+00 1.60795e-02 7.37644e-09
6.00000e+00 1.40000e+01 -1.55956e+07 0.00000e+00 7.32003e+03 7.48318e+03 0.00000e+00 1.60922e-02 6.39786e-09
6.00000e+00 1.50000e+01 -1.54836e+07 0.00000e+00 7.32003e+03 7.50776e+03 0.00000e+00 1.61049e-02 5.60244e-09
6.00000e+00 1.60000e+01 -1.53636e+07 0.00000e+00 7.32003e+03 7.53436e+03 0.00000e+00 1.61176e-02 4.94711e-09
6.00000e+00 1.70000e+01 -1.52358e+07 0.00000e+00 7.32003e+03 7.56307e+03 0.00000e+00 1.61303e-02 4.40077e-09
6.00000e+00 1.80000e+01 -1.51000e+07 0.00000e+00 7.32003e+03 7.59398e+03 0.00000e+00 1.61430e-02 3.94049e-09
6.00000e+00 1.90000e+01 -1.49560e+07 0.00000e+00 7.32003e+03 7.62719e+03 0.00000e+00 1.61557e-02 3.54908e-09
6.00000e+00 2.00000e+01 -1.48038e+07 0.00000e+00 7.32003e+03 7.66283e+03 0.00000e+00 1.61685e-02 3.21344e-09
6.00000e+00 2.10000e+01 -1.46433e+07 0.00000e+00 7.32003e+03 7.70103e+03 0.00000e+00 1.61812e-02 2.92343e-09
6.00000e+00 2.20000e+01 -1.44743e+07 0.00000e+00 7.32003e+03 7.74192e+03 0.00000e+00 1.61940e-02 2.67112e-09
6.00000e+00 2.30000e+01 -1.42967e+07 0.00000e+00 7.32003e+03 7.78568e+03 0.00000e+00 1.62068e-02 2.45025e-09
6.00000e+00 2.40000e+01 -1.41104e+07 0.00000e+00 7.32003e+03 7.83248e+03 0.00000e+00 1.62196e-02 2.25577e-09
6.00000e+00 2.50000e+01 -1.39153e+07 0.00000e+00 7.32003e+03 7.88253e+03 0.00000e+00 1.62324e-02 2.08365e-09
6.00000e+00 2.50000e+01 nan nan 7.32003e+03 nan nan nan 2.08365e-09
7.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 7.32003e+03 5.17604e+03 5.17604e+03 1.59155e-02 0.00000e+00 [135, 189]
7.00000e+00 1.00000e+00 -1.63659e+07 5.17604e+03 7.32003e+03 5.17753e+03 5.17604e+03 1.59280e-02 6.64958e-07 [136, 190]
7.00000e+00 2.00000e+00 -1.63555e+07 1.55281e+04 7.32003e+03 5.18051e+03 5.17604e+03 1.59406e-02 2.21828e-07 [137, 191]
7.00000e+00 3.00000e+00 -1.63400e+07 3.10563e+04 7.32003e+03 5.18498e+03 5.17604e+03 1.59532e-02 1.11001e-07 [138, 192]
7.00000e+00 4.00000e+00 -1.63193e+07 5.17604e+04 7.32003e+03 5.19095e+03 5.17603e+03 1.59658e-02 6.66533e-08    ...
7.00000e+00 5.00000e+00 -1.62933e+07 7.76406e+04 7.32003e+03 5.19843e+03 5.17600e+03 1.59784e-02 4.44706e-08
7.00000e+00 6.00000e+00 -1.62622e+07 1.08697e+05 7.32003e+03 5.20744e+03 5.17596e+03 1.59910e-02 3.17897e-08
7.00000e+00 7.00000e+00 -1.62258e+07 1.44929e+05 7.32003e+03 5.21799e+03 5.17589e+03 1.60036e-02 2.38611e-08
7.00000e+00 8.00000e+00 -1.61841e+07 1.86336e+05 7.32003e+03 5.23010e+03 5.17578e+03 1.60162e-02 1.85732e-08
7.00000e+00 9.00000e+00 -1.61371e+07 2.32919e+05 7.32003e+03 5.24379e+03 5.17562e+03 1.60288e-02 1.48703e-08
7.00000e+00 1.00000e+01 -1.60847e+07 2.84676e+05 7.32003e+03 5.25909e+03 5.17540e+03 1.60415e-02 1.21761e-08
7.00000e+00 1.10000e+01 -1.60269e+07 3.41607e+05 7.32003e+03 5.27603e+03 5.17510e+03 1.60541e-02 1.01547e-08
7.00000e+00 1.20000e+01 -1.59637e+07 4.03711e+05 7.32003e+03 5.29464e+03 5.17471e+03 1.60668e-02 8.59916e-09
7.00000e+00 1.30000e+01 -1.58950e+07 4.70985e+05 7.32003e+03 5.31495e+03 5.17419e+03 1.60795e-02 7.37644e-09
7.00000e+00 1.40000e+01 -1.58208e+07 5.43429e+05 7.32003e+03 5.33701e+03 5.17354e+03 1.60922e-02 6.39786e-09
7.00000e+00 1.50000e+01 -1.57409e+07 6.21038e+05 7.32003e+03 5.36086e+03 5.17272e+03 1.61049e-02 5.60244e-09
7.00000e+00 1.60000e+01 -1.56553e+07 7.03810e+05 7.32003e+03 5.38654e+03 5.17171e+03 1.61176e-02 4.94711e-09
7.00000e+00 1.70000e+01 -1.55640e+07 7.91739e+05 7.32003e+03 5.41410e+03 5.17047e+03 1.61303e-02 4.40077e-09
7.00000e+00 1.80000e+01 -1.54668e+07 8.84821e+05 7.32003e+03 5.44360e+03 5.16897e+03 1.61430e-02 3.94049e-09
7.00000e+00 1.90000e+01 -1.53637e+07 9.83048e+05 7.32003e+03 5.47510e+03 5.16716e+03 1.61557e-02 3.54908e-09
7.00000e+00 2.00000e+01 -1.52545e+07 1.08641e+06 7.32003e+03 5.50867e+03 5.16502e+03 1.61685e-02 3.21344e-09
7.00000e+00 2.10000e+01 -1.51392e+07 1.19491e+06 7.32003e+03 5.54437e+03 5.16247e+03 1.61812e-02 2.92343e-09
7.00000e+00 2.20000e+01 -1.50177e+07 1.30851e+06 7.32003e+03 5.58227e+03 5.15948e+03 1.61940e-02 2.67112e-09
7.00000e+00 2.30000e+01 -1.48897e+07 1.42722e+06 7.32003e+03 5.62246e+03 5.15598e+03 1.62068e-02 2.45025e-09
7.00000e+00 2.40000e+01 -1.47553e+07 1.55101e+06 7.32003e+03 5.66503e+03 5.15190e+03 1.62196e-02 2.25577e-09
7.00000e+00 2.50000e+01 -1.46142e+07 1.67987e+06 7.32003e+03 5.71005e+03 5.14717e+03 1.62324e-02 2.08365e-09
7.00000e+00 2.50000e+01 nan nan 7.32003e+03 nan nan nan 2.08365e-09
8.00000e+00 0.00000e+00 -1.63711e+07 0.00000e+00 7.32003e+03 4.48222e-13 7.32003e+03 1.59155e-02 0.00000e+00
8.00000e+00 1.00000e+00 -1.63711e+07 7.32003e+03 7.32003e+03 1.48721e+00 7.32003e+03 1.59280e-02 6.64958e-07
8.00000e+00 2.00000e+00 -1.63711e+07 2.19601e+04 7.32003e+03 4.46162e+00 7.32003e+03 1.59406e-02 2.21828e-07
8.00000e+00 3.00000e+00 -1.63711e+07 4.39202e+04 7.32003e+03 8.92323e+00 7.32002e+03 1.59532e-02 1.11001e-07
8.00000e+00 4.00000e+00 -1.63710e+07 7.32003e+04 7.32003e+03 1.48720e+01 7.32001e+03 1.59658e-02 6.66533e-08
8.00000e+00 5.00000e+00 -1.63710e+07 1.09800e+05 7.32003e+03 2.23078e+01 7.31997e+03 1.59784e-02 4.44706e-08
8.00000e+00 6.00000e+00 -1.63709e+07 1.53720e+05 7.32003e+03 3.12306e+01 7.31991e+03 1.59910e-02 3.17897e-08
8.00000e+00 7.00000e+00 -1.63707e+07 2.04960e+05 7.32003e+03 4.16399e+01 7.31981e+03 1.60036e-02 2.38610e-08
8.00000e+00 8.00000e+00 -1.63704e+07 2.63519e+05 7.32003e+03 5.35353e+01 7.31967e+03 1.60162e-02 1.85731e-08
8.00000e+00 9.00000e+00 -1.63700e+07 3.29397e+05 7.32003e+03 6.69160e+01 7.31945e+03 1.60288e-02 1.48701e-08
8.00000e+00 1.00000e+01 -1.63694e+07 4.02593e+05 7.32003e+03 8.17810e+01 7.31915e+03 1.60415e-02 1.21759e-08
8.00000e+00 1.10000e+01 -1.63686e+07 4.83106e+05 7.32003e+03 9.81288e+01 7.31875e+03 1.60541e-02 1.01544e-08
8.00000e+00 1.20000e+01 -1.63675e+07 5.70934e+05 7.32003e+03 1.15957e+02 7.31822e+03 1.60668e-02 8.59875e-09
8.00000e+00 1.30000e+01 -1.63661e+07 6.66076e+05 7.32003e+03 1.35264e+02 7.31755e+03 1.60795e-02 7.37594e-09
8.00000e+00 1.40000e+01 -1.63644e+07 7.68527e+05 7.32003e+03 1.56046e+02 7.31670e+03 1.60922e-02 6.39726e-09
8.00000e+00 1.50000e+01 -1.63622e+07 8.78286e+05 7.32003e+03 1.78299e+02 7.31566e+03 1.61049e-02 5.60172e-09
8.00000e+00 1.60000e+01 -1.63595e+07 9.95346e+05 7.32003e+03 2.02017e+02 7.31439e+03 1.61176e-02 4.94627e-09
8.00000e+00 1.70000e+01 -1.63563e+07 1.11970e+06 7.32003e+03 2.27195e+02 7.31285e+03 1.61303e-02 4.39980e-09
8.00000e+00 1.80000e+01 -1.63525e+07 1.25135e+06 7.32003e+03 2.53826e+02 7.31103e+03 1.61430e-02 3.93939e-09
8.00000e+00 1.90000e+01 -1.63479e+07 1.39028e+06 7.32003e+03 2.81900e+02 7.30888e+03 1.61557e-02 3.54783e-09
8.00000e+00 2.00000e+01 -1.63426e+07 1.53648e+06 7.32003e+03 3.11408e+02 7.30637e+03 1.61685e-02 3.21203e-09
8.00000e+00 2.10000e+01 -1.63364e+07 1.68995e+06 7.32003e+03 3.42337e+02 7.30346e+03 1.61812e-02 2.92186e-09
8.00000e+00 2.20000e+01 -1.63292e+07 1.85066e+06 7.32003e+03 3.74675e+02 7.30012e+03 1.61940e-02 2.66939e-09
8.00000e+00 2.30000e+01 -1.63210e+07 2.01861e+06 7.32003e+03 4.08404e+02 7.29630e+03 1.62068e-02 2.44833e-09
8.00000e+00 2.40000e+01 -1.63116e+07 2.19377e+06 7.32003e+03 4.43508e+02 7.29196e+03 1.62196e-02 2.25368e-09
8.00000e+00 2.50000e+01 -1.63009e+07 2.37613e+06 7.32003e+03 4.79966e+02 7.28705e+03 1.62324e-02 2.08136e-09
8.00000e+00 2.50000e+01 nan nan 7.32003e+03 nan nan nan 2.08136e-09
...
python numpy vectorization array-broadcasting elementwise-operations
1个回答
0
投票

如注释中所述,您可以按第二列 (

[1]
) 中的值拆分数组,然后计算索引:

# note you don't need `t` here:
def query_trks(FULL, trk, v, N):
    filt = np.where(FULL[:, 4] == v)[0]
    trks = FULL[filt, 0]
    idxs = np.abs(trks[:, None] - trks).argsort(axis=0)[:N]
    return FULL[idxs.T.astype(int), -1]


N = 2
arr = np.loadtxt("out.txt")

# add original index
arr = np.c_[arr, np.arange(len(arr))]

# sort arr by 2nd value:
arr = arr[arr[:, 1].argsort()]

# split the array by 2nd value
splitted_array = np.split(arr, np.unique(arr[:, 1], return_index=True)[1][1:])

columns_to_add = np.concatenate(
    [query_trks(a, a[:, 0], a[:, 4], N) for a in splitted_array]
)

# add back computed indices to arr
arr = np.c_[arr, columns_to_add]

# sort arr back (by the original index)
arr = arr[arr[:, -N - 1].argsort()]

print(arr)

打印(计算出的索引位于最后 N 列中):

[[ 1.00000e+00  0.00000e+00 -1.63711e+07 ...  0.00000e+00  0.00000e+00
   2.70000e+01]
 [ 1.00000e+00  1.00000e+00 -1.63687e+07 ...  1.00000e+00  1.00000e+00
   2.80000e+01]
 [ 1.00000e+00  2.00000e+00 -1.63639e+07 ...  2.00000e+00  2.00000e+00
   2.90000e+01]

...
© www.soinside.com 2019 - 2024. All rights reserved.