大学学的高数都还给体育老师了。
下面我们快速回忆一下矩阵的常用运算
不用循环对数组的元素进行批量操作,称为矢量化(vetorization)
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.arange(6)
b= b.reshape(2,3)
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b
array([[0, 1, 2],
[3, 4, 5]])
>>> a+b
array([[ 1, 3, 5],
[ 7, 9, 11]])
>>> a-b
array([[1, 1, 1],
[1, 1, 1]])
>>> a*b #逐项相乘
array([[ 0, 2, 6],
[12, 20, 30]])
>>> a**b #逐项乘方
array([[ 1, 2, 9],
[ 64, 625, 7776]])
>>> sum(a)
array([5, 7, 9])
>>> np.sin(a)
array([[ 0.84147098, 0.90929743, 0.14112001],
[-0.7568025 , -0.95892427, -0.2794155 ]])
>>> 1/a
array([[1. , 0.5 , 0.33333333],
[0.25 , 0.2 , 0.16666667]])
numpy array的切片是原来数组的视图,对切片的数据进行修改,会直接修改原来数组的数据。 除非进行显式的复制,例如arr[5:8].copy()
>>> a array([[1, 2, 3], [4, 5, 6]]) #矩阵第一列 >>> a[:,0] array([1, 4]) #矩阵第一行 >>> a[:1,] array([[1, 2, 3]]) #矩阵最后一列 >>> a[:,-1] array([3, 6])
http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html