¿Es correcta esta respuesta: https://stackoverflow.com/a/39662710/1175080 ?
Citando esa respuesta.
En Python 3.5, hay un nuevo operador para el producto de puntos, por lo que puede escribir a = A @ B en lugar de a = numpy.dot (A, B)
No parece funcionar para mí.
$ python3 Python 3.6.1 (default, Apr 4 2017, 09:40:21) [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a @ b Traceback (most recent call last): File "", line 1, in TypeError: unsupported operand type(s) for @: 'list' and 'list' >>>
Pero la respuesta vinculada ha recibido 6 votos a favor, así que debo estar perdiendo algo. ¿Puede proporcionar un ejemplo completo que muestre cómo usar el operador @
para calcular un producto de puntos?
Vea las novedades en Python 3.5, sección matrix mult (PEP 465) :
PEP 465 agrega el operador
@
infijo para la multiplicación de matrices. Actualmente, ningún tipo de Python integrado implementa el nuevo operador , sin embargo, puede implementarse definiendo__matmul__()
,__rmatmul__()
y__imatmul__()
para la multiplicación de matrices regular, reflejada e in situ. La semántica de estos métodos es similar a la de los métodos que definen otros operadores aritméticos de infijo.
Entonces, tendrías que implementar esos métodos tú mismo.
O, use numpy>=1.10
que ya tiene soporte para el nuevo operador:
>>> import numpy >>> x = numpy.ones(3) >>> m = numpy.eye(3) >>> x @ m array([ 1., 1., 1.])