Как мне вычислить xi ^ j в матрице в Numpy

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