Преобразование двух списков в матрицу

Я постараюсь быть максимально ясным, и я начну с объяснения, почему я хочу преобразовать два массива в матрицу.

Чтобы построить производительность портфеля и рыночный индекс, мне нужна структура данных, как в этом формате:

[[portfolio_value1, index_value1]
 [portfolio_value2, index_value2]]

Но у меня есть данные как два отдельных одномерных массива:

portfolio = [portfolio_value1, portfolio_value2, ...]
index = [index_value1, index_value2, ...]

Итак, как мне преобразовать второй сценарий в первый. Я попытался np.insert добавить второй массив в тестовую матрицу, которую я имел в оболочке python, моя проблема состояла в том, чтобы перенести первый массив в одну матрицу столбца.

Любая помощь в том, как достичь этого без обязательного цикла, будет отличной.

Ответ 1

Стандартная функция numpy для того, что вы хотите, np.column_stack:

>>> np.column_stack(([1, 2, 3], [4, 5, 6]))
array([[1, 4],
       [2, 5],
       [3, 6]])

Итак, с массивами portfolio и index, делая

np.column_stack((portfolio, index))

даст что-то вроде:

[[portfolio_value1, index_value1],
 [portfolio_value2, index_value2],
 [portfolio_value3, index_value3],
 ...]

Ответ 2

Вы можете использовать np.c_

np.c_[[1,2,3], [4,5,6]]

Это даст вам:

np.array([[1,4], [2,5], [3,6]])

Ответ 3

Предполагая, что длина портфеля и индекса одинакова:

matrix = []
for i in range(len(portfolio)):
    matrix.append([portfolio[i], index[i]])

Или однострочный просмотр с использованием списка:

matrix2 = [[portfolio[i], index[i]] for i in range(len(portfolio))]

Ответ 4

Вы можете попробовать ниже:

a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
z=np.c_[a,b]
print(z)