Ваш x
, без np.mat
:
In [225]: x = np.array([1,2,3])[:,None]
In [226]: x
Out[226]:
array([[1],
[2],
[3]])
In [227]: p = 2
In [228]: Phi = np.zeros((3,2))
In [229]: Phi[:,0] = np.power(x,0)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-229-f8ff29de133c> in <module>
----> 1 Phi[:,0] = np.power(x,0)
ValueError: could not broadcast input array from shape (3,1) into shape (3)
Почему?x
имеет форму (3,1) (как определено).Но Phi[:,0]
имеет форму (3,).По правилам трансляции (3,1) нельзя поместить в (3,) пространство.А (1,3) мог.А (3,) мог.
Давайте сделаем x
(3,):
In [230]: x = np.array([1,2,3])
In [231]: Phi[:,0] = np.power(x,0)
In [232]: Phi[:,1] = np.power(x,1)
In [233]: Phi
Out[233]:
array([[1., 1.],
[1., 2.],
[1., 3.]])
Теперь мы можем назначить столбцы.
Теперь форма (3,1) x
можетработать с несколькими степенями одновременно:
In [234]: np.power(x[:,None],[0,1,2,3])
Out[234]:
array([[ 1, 1, 1, 1],
[ 1, 2, 4, 8],
[ 1, 3, 9, 27]])
Здесь (3,1) x
передает с (4,) p
для получения (3,4) результата.
Шаги вещания: (3,1), (4,) => (3,1), (1,4) => (3,4), (3,4)
ключи - размеры 1 могут быть добавлены автоматически в ведущей позиции.Размеры 1 масштабируются так, чтобы соответствовать другим.