有没有一种有效的方法可以将二维 numpy 数组(坐标数组)拆分为两个一维 numpy 数组?

Is there an efficient way of splitting a 2-D numpy array(an array of coordinates) to two 1-D numpy arrays?

这是我的数组,我想将它分成两个数组,一个包含对的所有第一个值,一个包含对的所有第二个值。有什么有效的方法吗?

array([[-0.43042553, -0.1224234 ],
       [-2.03524537,  0.56015045],
       [ 1.40186973, -0.74534088],
       [-0.04612834, -0.43374017],
       [-0.71154051, -0.54219998],
       [-0.10434967, -0.80116922],
       [-0.28625899, -1.15067218],
       [ 2.18190517,  0.52953827]])

这是您的操作方法。

>>> arr = np.array([[-0.43042553, -0.1224234 ],
...        [-2.03524537,  0.56015045],
...        [ 1.40186973, -0.74534088],
...        [-0.04612834, -0.43374017],
...        [-0.71154051, -0.54219998],
...        [-0.10434967, -0.80116922],
...        [-0.28625899, -1.15067218],
...        [ 2.18190517,  0.52953827]])
>>>
>>> arr
array([[-0.43042553, -0.1224234 ],
       [-2.03524537,  0.56015045],
       [ 1.40186973, -0.74534088],
       [-0.04612834, -0.43374017],
       [-0.71154051, -0.54219998],
       [-0.10434967, -0.80116922],
       [-0.28625899, -1.15067218],
       [ 2.18190517,  0.52953827]])
>>> a1, a2 = arr[:,0], arr[:,1]
>>> a1
array([-0.43042553, -2.03524537,  1.40186973, -0.04612834, -0.71154051,
       -0.10434967, -0.28625899,  2.18190517])
>>> a2
array([-0.1224234 ,  0.56015045, -0.74534088, -0.43374017, -0.54219998,
       -0.80116922, -1.15067218,  0.52953827])

你可以直接切片

arr = np.array([[-0.43042553, -0.1224234 ],
                [-2.03524537,  0.56015045],
                [ 1.40186973, -0.74534088],
                [-0.04612834, -0.43374017],
                [-0.71154051, -0.54219998],
                [-0.10434967, -0.80116922],
                [-0.28625899, -1.15067218],
                [ 2.18190517,  0.52953827]])
arr1, arr2 = arr[:, 0], arr[:, 1]

与其他答案类似但更简洁:

a1, a2 = arr.T