• Python: 3.8.11
• Numpy: 1.20.1
• OS: Ubuntu Kylin 20.04
• Conda: 4.10.1
• Jupyter lab: 3.1.4

### Code sample

``````import numpy as np
Copy the code``````
``````a = np.array([[1.2.3.4], [5.6.7.8]])
b = np.array([[1.2.3], [4.5.6], [7.8.9], [10.11.12]])
Copy the code``````
``````a

array([[1.2.3.4],
[5.6.7.8]])
Copy the code``````
``````b

array([[ 1.2.3],
[ 4.5.6],
[ 7.8.9],
[10.11.12]])
Copy the code``````
``````a.shape,b.shape

((2.4), (4.3))
Copy the code``````
``````The number of columns in the first matrix is the same as the number of rows in the second matrix
np.dot(a,b)

array([[ 70.80.90],
[158.184.210]])
Copy the code``````
``````np.dot(b,a)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-69-e6bd3a7b39a0> in <module>
----> 1 np.dot(b,a)

<__array_function__ internals> in dot(*args, **kwargs)

ValueError: shapes (4.3) and (2.4) not aligned: 3 (dim 1) != 2 (dim 0)
Copy the code``````

### The source code to learn

``````help(np.dot)

Help on function dot in module numpy:

dot(...)
dot(a, b, out=None)

Dot product of two arrays. Specifically,

- If both `a` and `b` are 1-D arrays, it is inner product of vectors
(without complex conjugation).

- If both `a` and `b` are 2-D arrays, it is matrix multiplication,
but using :func:`matmul` or ``a @ b`` is preferred.

- If either `a` or `b` is 0-D (scalar), it is equivalent to :func:`multiply`
and using ``numpy.multiply(a, b)`` or ``a * b`` is preferred.

- If `a` is an N-D array and `b` is a 1-D array, it is a sum product over
the last axis of `a` and `b`.

- If `a` is an N-D array and `b` is an M-D array (where ``M>=2``), it is a
sum product over the last axis of `a` and the second-to-last axis of `b`::

dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

......
Copy the code``````

### Learning to recommend

• Python documentation – English
• Python documentation – Chinese
• Python code PEP
• Google version of the Python specification
• Python source code
• Python PEP
• Optimal kirin
• The nuggets platform
• Gitee platform

Python is open source, cross-platform, interpretive, interactive, and worth learning. Python’s design philosophy: elegant, unambiguous, simple. Advocate one way, preferably only one way to do one thing. Code should be written in accordance with specifications to facilitate communication and understanding. Every language has its own unique ideas. Beginners need to change their thinking, practice and accumulate.