Я бы хотел умножить (3, 3)
np.matrix
на (3,1)
np.matrix
, который включает pint
Количество информации.
Этот код работает:
import numpy as np
x = np.mat([[1,0,0],[0,1,0],[0,0,1]])
y = np.mat([[1],[0],[0]])
x * y
>>> x * y
matrix([[1],
[0],
[0]])
Этот код выдает ошибку:
import numpy as np
import pint
ureg = pint.UnitRegistry()
x = np.mat([[1,0,0],[0,1,0],[0,0,1]])
y = np.mat([[1],[0],[0]]) * ureg("m")
x * y
Ошибка:
>>> x * y
Traceback (most recent call last):
File "<input>", line 1, in <module>
x * y
File "~/.virtualenvs/py3env/lib/python3.7/site-package
s/pint/quantity.py", line 900, in __mul__
return self._mul_div(other, operator.mul)
File "~/.virtualenvs/py3env/lib/python3.7/site-package
s/pint/quantity.py", line 75, in wrapped
result = f(self, *args, **kwargs)
File "~/.virtualenvs/py3env/lib/python3.7/site-package
s/pint/quantity.py", line 60, in wrapped
result = f(self, *args, **kwargs)
File "~/.virtualenvs/py3env/lib/python3.7/site-package
s/pint/quantity.py", line 866, in _mul_div
magnitude = magnitude_op(self._magnitude, other_magnitude)
File "~/.virtualenvs/py3env/lib/python3.7/site-package
s/numpy/matrixlib/defmatrix.py", line 215, in __mul__
return N.dot(self, asmatrix(other))
ValueError: shapes (3,1) and (3,3) not aligned: 1 (dim 1) != 3 (dim 0)
ЕслиЯ использую np.dot()
Я получаю результат, но единицы были убраны
>>> np.dot(x, y)
~/.virtualenvs/py3env/lib/python3.7/site-packages/pint/q
uantity.py:1377: UnitStrippedWarning: The unit of the quantity is stripped
.
warnings.warn("The unit of the quantity is stripped.", UnitStrippedWarni
ng)
matrix([[1],
[0],
[0]])
Это ожидаемое поведение?Могу ли я использовать математику NumPy с pint
Количествами?Есть ли способ сделать это?
Я использую Python 3.7 Numpy == 1.15.2 Пинта == 0.9