2.数组和数值的算术运算
>>> x = np.array((1, 2, 3, 4, 5)) # 创建数组对象
>>> x
array([1, 2, 3, 4, 5])
>>> x * 2 # 数组与数值相乘,返回新数组
array([ 2, 4, 6, 8, 10])
>>> x / 2 # 数组与数值相除
array([ 0.5, 1. , 1.5, 2. , 2.5])
>>> x // 2 # 数组与数值整除
array([0, 1, 1, 2, 2], dtype=int32)
>>> x ** 3 # 幂运算
array([1, 8, 27, 64, 125], dtype=int32)
>>> x + 2 # 数组与数值相加
array([3, 4, 5, 6, 7])
>>> x % 3 # 余数
array([1, 2, 0, 1, 2], dtype=int32)
>>> 2 ** x
array([2, 4, 8, 16, 32], dtype=int32)
>>> 2 / x
array([2. ,1. ,0.66666667, 0.5, 0.4])
>>> 63 // x
array([63, 31, 21, 15, 12], dtype=int32)
3.数组和数组的算术运算
>>> a = np.array((1, 2, 3))
>>> b = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9]))
>>> c = a * b # 数组与数组相乘
>>> c # a中的每个元素乘以b中的对应列元素
array([[ 1, 4, 9],
[ 4, 10, 18],
[ 7, 16, 27]])
>>> c / b # 数组之间的除法运算
array([[ 1., 2., 3.],
[ 1., 2., 3.],
[ 1., 2., 3.]])
>>> c / a
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
>>> a + a # 数组之间的加法运算
array([2, 4, 6])
>>> a * a # 数组之间的乘法运算
array([1, 4, 9])
>>> a - a # 数组之间的减法运算
array([0, 0, 0])
>>> a / a # 数组之间的除法运算
array([ 1., 1., 1.])
>>> a+b # a中每个元素加b中的每一列元素
array([[ 2, 4, 6],
[ 5, 7, 9],
[ 8, 10, 12]])
>>> np.array([1, 2, 3, 4]) + np.array([4, 3, 2, 1])
array([5, 5, 5, 5])
>>> np.array([1, 2, 3, 4]) + np.array([4])
array([5, 6, 7, 8])
4.二维数组转置
>>> b = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9]))
>>> b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> b.T # 转置
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
>>> a = np.array((1, 2, 3, 4))
>>> a
array([1, 2, 3, 4])
>>> a.T # 一维数组转置以后和原来是一样的
array([1, 2, 3, 4])
5.向量点积
点积/内积
>>> a = np.array((5, 6, 7))
>>> b = np.array((6, 6, 6))
>>> a.dot(b) # 向量内积
108 # 5*5+6*6+7*6
>>> np.dot(a,b)
108
>>> sum(a*b)
108
>>> c = np.array(([1,2,3],[4,5,6],[7,8,9])) # 二维数组
>>> c.dot(a) # 二维数组的每行与一维向量计算内积
array([ 38, 92, 146])
>>> c[0].dot(a) # 验证一下,两个一维向量计算内积
38
>>> c[1].dot(a)
92
>>> c[2].dot(a)
146
>>> a.dot(c) # 一维向量与二维向量的每列计算内积
array([78, 96, 114])
>>> cT = c.T # 转置
>>> a.dot(cT[0])
78
>>> a.dot(cT[1])
96
>>> a.dot(cT[2])
114