Maak een tweedimensionale array met twee eendimensionale array

Mijn functie (naam CovexHull(point)) accepteert argument als 2-dimensionale array.

romp = ConvexHull(punten)

In [1]: points.ndim
Out[1]: 2
In [2]: points.shape
Out[2]: (10, 2)
In [3]: points
Out[3]: 
array([[ 0. ,  0. ],
       [ 1. ,  0.8],
       [ 0.9,  0.8],
       [ 0.9,  0.7],
       [ 0.9,  0.6],
       [ 0.8,  0.5],
       [ 0.8,  0.5],
       [ 0.7,  0.5],
       [ 0.1,  0. ],
       [ 0. ,  0. ]])

points is een numpy array met ndim 2.

Ik heb 2 verschillende numpy-arrays (tp en fp) zoals hieronder

In [4]: fp.ndim
Out[4]: 1
In [5]: fp.shape
Out[5]: (10,)
In [6]: fp
Out[6]: 
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.4,
        0.5, 0.6,  0.9,  1. ])

Ik wil weten hoe ik effectief een 2-dimensionale numpy-array kan maken (zoals hierboven vermeld) met tp en fp.


Antwoord 1, autoriteit 100%

Als je twee 1-d arrays van 10 elementen wilt combineren tot een 2-d array, zal np.vstack((tp, fp)).Tdat doen. np.vstack((tp, fp))retourneert een array van vorm (2, 10), en het Tattribuut retourneert de getransponeerde array met vorm (10, 2 ) (dwz met de twee 1-d arrays die kolommen vormen in plaats van rijen).

>>> tp = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> tp.ndim
1
>>> tp.shape
(10,)
>>> fp = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> fp.ndim
1
>>> fp.shape
(10,)
>>> combined = np.vstack((tp, fp)).T
>>> combined
array([[ 0, 10],
       [ 1, 11],
       [ 2, 12],
       [ 3, 13],
       [ 4, 14],
       [ 5, 15],
       [ 6, 16],
       [ 7, 17],
       [ 8, 18],
       [ 9, 19]])
>>> combined.ndim
2
>>> combined.shape
(10, 2)

Antwoord 2, autoriteit 39%

Je kunt numpy’s column_stack

np.column_stack((tp, fp))

Antwoord 3, autoriteit 2%

Een andere manier is om np.transposete gebruiken. Het lijkt af en toe te worden gebruikt, maar het is niet leesbaar, dus het is een goed idee om het bovenstaande antwoord te gebruiken. Maar ik hoop dat het je helpt als je het ergens tegenkomt.

import numpy as np
tp = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
fp = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
combined = np.transpose((tp, fp))
combined
# Out[3]:
# array([[ 0, 10],
#        [ 1, 11],
#        [ 2, 12],
#        [ 3, 13],
#        [ 4, 14],
#        [ 5, 15],
#        [ 6, 16],
#        [ 7, 17],
#        [ 8, 18],
#        [ 9, 19]])
combined.ndim
# Out[4]: 2
combined.shape
# Out[5]: (10, 2)

Other episodes