создание матрицы из столбцов другой матрицы

#python #numpy #matrix

#python #numpy #матрица

Вопрос:

У меня есть матрица, подобная: [[1 1 0] [1 0 1] [0 1 0]]
Я хочу создать другую матрицу, которая в каждой строке содержит столбец предыдущей матрицы и два случайных числа в каждом столбце. [[1,1,0] 0.5 , 0.6 [1,0,1] 0.3 , 0.2 [0,1,0] 0.2 , 0.9]

Комментарии:

1. Нет, вам не нужен такой массив. При необходимости составьте список, но не тратьте время на массив.

Ответ №1:

Для этого вы можете использовать встроенную функцию объединения и модуль random.

 import numpy as np

# original matrix
matrix = np.array([[1, 1, 0], [1, 0, 1], [0, 1, 0]])

# add-on with random numbers (gaussian)
add_matrix = np.random.randn(3,2)

# concatentation
result = np.concatenate((matrix, add_matrix), axis=1)
  

ОБНОВЛЕНИЕ: если вам нужен немного более обобщаемый код, вы можете сделать
np.random.randn(matrix.shape[0],2) вместо np.random.randn(3,2) .

Комментарии:

1. Вероятно, лучше, matrix.shape[0] чем жестко закодировать 3 .

2. В общем, я согласен, но это игрушечный пример и, вероятно, так понятнее.

Ответ №2:

Вы можете использовать random библиотеку

 import random as rand

A = [[1, 1, 0], [1, 0, 1], [0, 1, 0]]

result = []

for i in A:
    result.append(i)
    result.append(round(rand.random(), 1))
    result.append(round(rand.random(), 1))

print(result)
  

Вывод:

 [[1, 1, 0], 0.4, 0.6, [1, 0, 1], 0.7, 0.5, [0, 1, 0], 0.9, 0.8]