#python #python-3.x #numpy
#python #python-3.x #numpy
Вопрос:
Я пытаюсь вычислить матрицу из введенного массива.
Я хотел бы иметь возможность вводить
a = [0,1,2]
в python и хотел бы изменить его с помощью Numpy таким образом, чтобы в результате массив имел форму x_i ^ j в строке i и столбце j,
итак, например, входные данные:
a = [0,1,2]
и результат должен быть
[[1,0,0],
[1,1,1],
[1,2,4]]
и я использовал следующий код
xij = np.matrix([np.power(xi,j) for j in x for xi in x]).reshape(3,3)
[[ 1, 2, 3],
[ 1, 4, 9],
[ 1, 8, 27]]
Я предполагаю, что я использую неправильную формулу для Numpy,
пожалуйста, не могли бы вы помочь мне в этом, чтобы решить проблему.
Заранее спасибо
Комментарии:
1. Если я хорошо понимаю вашу проблему, ваш пример вывода должен быть
[[1, 1, 1], [1, 2, 4], [1, 4, 16]]
, не так ли?
Ответ №1:
Вам нужно использовать range(len(a))
, чтобы получить показатели и правильный порядок циклов for
a = [0,1,2]
xij = np.matrix([np.power(xi,j) for xi in a for j in range(len(a))]).reshape(3,3)
# matrix([[1, 0, 0],
# [1, 1, 1],
# [1, 2, 4]])
Ответ №2:
С широковещательной передачей массива:
In [823]: np.array([0,1,2])**np.arange(3)[:,None]
Out[823]:
array([[1, 1, 1],
[0, 1, 2],
[0, 1, 4]])
In [825]: np.array([1,2,3])**np.arange(1,4)[:,None]
Out[825]:
array([[ 1, 2, 3],
[ 1, 4, 9],
[ 1, 8, 27]])