Преобразование двух списков в матрицу
Я постараюсь быть максимально ясным, и я начну с объяснения, почему я хочу преобразовать два массива в матрицу.
Чтобы построить производительность портфеля и рыночный индекс, мне нужна структура данных, как в этом формате:
[[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)