合并两个2D Numpy数组,同时保留行ord

2024-04-26 17:43:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的2D numpy数组,其中包含X和Y列

[(476301.98163511883, 6178749.129456658)
 (477927.0510582989, 6178741.4760845825)
 (477918.79328165855, 6177112.834659822)]


[(476301.98163511883, 6175045.129456658)
 (477927.0510582989, 6175037.4760845825)
 (477918.79328165855, 6173408.834659822)]

我试图在保持行顺序的同时将两者合并在一起

结果如下:

[(476301.98163511883, 6178749.129456658), (476301.98163511883, 6175045.129456658)
 (477927.0510582989, 6178741.4760845825),  (477927.0510582989, 6175037.4760845825)
 (477918.79328165855, 6177112.834659822),  (477918.79328165855, 6173408.834659822)]

我现在用这样的发电机工作,但我真的觉得这不是正确的方法。你知道吗

    def generator_array():
        for value in both_arrays:
            yield value

    x = generator_array()

    feature_list = []

    try:
        while x:
            pt1 = next(x)
            pt2 = next(x)
            feature_list.append((pt1[0], pt1[1], pt2[0], pt2[1]))
    except StopIteration:
        pass

谢谢


Tags: 方法numpyfor顺序valuedef数组generator
3条回答

^{}可以:

a=np.array([(476301.98163511883, 6178749.129456658), (477927.0510582989, 6178741.4760845825), (477918.79328165855, 6177112.834659822)])
b=np.array([(476301.98163511883, 6175045.129456658), (477927.0510582989, 6175037.4760845825), (477918.79328165855, 6173408.834659822)])

np.concatenate((a,b),axis=1)

array([[  476301.98163512,  6178749.12945666,   476301.98163512,
         6175045.12945666],
       [  477927.0510583 ,  6178741.47608458,   477927.0510583 ,
         6175037.47608458],
       [  477918.79328166,  6177112.83465982,   477918.79328166,
         6173408.83465982]])

我不太清楚你在问什么,因为你的代码不会产生你想要的结果,但是会:

np.hstack((a,b))

工作时,ab是您的两个数组?你知道吗

我可以通过以下步骤使它工作

import numpy.lib.recfunctions as rfn

merged_array = rfn.merge_arrays((array1,array2), usemask = False)

相关问题 更多 >