- 在NumPy中,能够以多种方式创建向量和矩阵。
import numpy as np
a0 = np.array([0,1,2,3]) #一个[],一维向量,a0.shape = (4,)
a1 = np.array([[0,1,2,3]]) #两个[[]],二维矩阵,a1.shape = (1, 4)
a2 = np.array([[0], #两个[[]],二维矩阵,a2.shape = (4, 1)
[1],
[2],
[3]])
b = np.array([4,5,6,7])
c = np.array([[0,1,2,3],
[4,5,6,7]])
d = np.zeros((2,4)) #创建2行4列的全0矩阵
e = np.random.rand(2,5) #创建2行5列的随机矩阵,且元素的值在0到1之间
print('a0 =',a0)
print('a0.shape =',a0.shape)
print('a0[0] =',a0[0])
print('a1 =',a1)
print('a1.shape =',a1.shape)
print('a1[0] =',a1[0])
print('a1[0][0] =',a1[0][0])
print('a2 =',a2)
print('a2.shape',a2.shape)
print('a2[0] =',a2[0])
print('a2[0][0] =',a2[0][0])
print('b =',b)
print('c =',c)
print('d =',d)
print('e =',e)
结果如下:
a0 = [0 1 2 3]
a0.shape = (4,)
a0[0] = 0
a1 = [[0 1 2 3]]
a1.shape = (1, 4)
a1[0] = [0 1 2 3]
a1[0][0] = 0
a2 = [[0]
[1]
[2]
[3]]
a2.shape (4, 1)
a2[0] = [0]
a2[0][0] = 0
b = [4 5 6 7]
c = [[0 1 2 3]
[4 5 6 7]]
d = [[0. 0. 0. 0.]
[0. 0. 0. 0.]]
e = [[0.97844721 0.08462048 0.3743765 0.05988952 0.27893199]
[0.63314158 0.06687459 0.42257399 0.75986062 0.11585396]]
2. 在NumPy中,对向量和矩阵进行运算。
在阅读numpy代码时,实际上是在做两件事:阅读这些操作,并跟踪每个操作的形状(每个操作所对应的行数和列数)
#1.逐元素操作(包括+、-、*、/):2个变量必须具有相同数量的列,或其中一个变量只有一列
print('a0 * 2 =',a0 * 2) #向量a0中的每一个数都乘以2
print('c * 2 =',c * 2) #矩阵c中的每一个数都乘以2
print('a0 * b =',a0 * b) #对向量a和向量b执行逐元素乘法(按照列配对)
print('a0 * c =',a0 * c) #对矩阵c的每一行执行逐元素乘法,因为c和a具有同样的列数
#2.使用dot函数进行点积操作:对应矩阵乘法运算,左矩阵的列数必须等于右矩阵的行数,(a,b).dot(b,c)=(a,c)
f = np.zeros((2,5))
g = np.zeros((5,4))
h = f.dot(g)
print('h.shape =',h.shape)
结果如下:
a0 * 2 = [0 2 4 6]
c * 2 = [[ 0 2 4 6]
[ 8 10 12 14]]
a0 * b = [ 0 5 12 21]
a0 * c = [[ 0 1 4 9]
[ 0 5 12 21]]
h.shape = (2, 4)