Создайте 2-мерный массив с 2-мя одномерными массивами

Я использовал numpy и scipy, и там какая-то функция действительно заботится о размерности массива. У меня есть имя функции CovexHull (point), которые принимают эту точку как 2-мерный массив.

hull = ConvexHull (точки)

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. ]])

Как вы можете видеть выше, точки являются numpy с ndim 2.

Теперь у меня есть 2 разных массива numpy (tp и fp), подобных этому (например, fp)

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. ])

Мой вопрос заключается в том, как я могу создать массив из 2-мерных numpy эффективно, как точки с tp и fp

Ответ 1

Если вы хотите объединить два десятичных элемента 1-d массива в 2-й массив, то np.vstack((tp, fp)).T сделает это. np.vstack((tp, fp)) вернет массив формы (2, 10), а атрибут T возвращает транспонированный массив с формой (10, 2) (т.е. с двумя массивами 1-d, образующими столбцы, а не строк).

>>> 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)

Ответ 2

Вы можете использовать numpy column_stack

np.column_stack((tp, fp))