大学学的高数都还给体育老师了。
下面我们快速回忆一下矩阵的常用运算
不用循环对数组的元素进行批量操作,称为矢量化(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