>>>a = np.arange(1,11).reshape(10,1)
>>>b = a * 1.1
>>>c = a / 1.1
>>>a
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10]])
>>>b
array([[ 1.1],
[ 2.2],
[ 3.3],
[ 4.4],
[ 5.5],
[ 6.6],
[ 7.7],
[ 8.8],
[ 9.9],
[ 11. ]])
>>>c
array([[ 0.90909091],
[ 1.81818182],
[ 2.72727273],
[ 3.63636364],
[ 4.54545455],
[ 5.45454545],
[ 6.36363636],
[ 7.27272727],
[ 8.18181818],
[ 9.09090909]])
>>>x = np.array([
... np.reshape(a, len(a)),
... np.reshape(b, len(b)),
... np.reshape(c, len(c))
... ]).transpose()
>>>x
array([[ 1., 1.1 , 0.90909091],
[ 2., 2.2 , 1.81818182],
[ 3., 3.3 , 2.72727273],
[ 4., 4.4 , 3.63636364],
[ 5., 5.5 , 4.54545455],
[ 6., 6.6 , 5.45454545],
[ 7., 7.7 , 6.36363636],
[ 8., 8.8 , 7.27272727],
[ 9., 9.9 , 8.18181818],
[ 10., 11., 9.09090909]])
>>>
使用numpy创建矩阵有2种方法,一种是使用numpy库的matrix直接创建,另一种则是使用array来创建。首先加载numpy库,然后分别用上面说的2种方法来分别构建一个4×3的矩阵,如图
2
矩阵创建好了,大家看到了2个矩阵长得差不多,是否相等呢?我们用==(python中用==表示等于)来试试看看,如下图
请点击输入图片描述
3
我们下面看看2个矩阵相乘的结果,可以看到使用matrix创建的矩阵m1乘以自身,结果报错了:因为矩阵相乘需要满足一定的条件[1];而使用array创建的矩阵m2乘以自身,结果并没有报错,因为这里用的是Hadamard乘法[2]而m1×m2也报错了,说明只要有一个是matrix,就不能用Hadamard乘法,如图所示
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
4
下面看几个特殊矩阵[3]:使用np.zeros可以生成零矩阵,使用np.ones可以生成1矩阵,使用np.identity可以生成单位矩阵,使用np.diag可以生成对角矩阵,如图所示
请点击输入图片描述
请点击输入图片描述
5
最后看看矩阵的行向量和列向量提取方法。例如m1[[0,3]]表示提取矩阵m1的第0行和第3行[4],当然也可以用m1[[True,False,False,True]]来达到同样的效果,True就是表示对应的行要提取;而m1[:,[-2,-1]]则是提取矩阵的最后2列的列向量,m1[:,[False,True,True]]的一样可以提取最后2列的列向量,如图所示
请点击输入图片描述
请点击输入图片描述
END
注意事项
[1]在高等数学或者线性代数等已经学过了当后面的矩阵的行数等于前面矩阵的列数时,2个矩阵才可以相乘
[2]Hadamard指的是2个m×n的矩阵相乘,结果仍然是m×n的矩阵,结果为对应元素的乘积
[3]单位矩阵是特殊的对角矩阵,零(1)矩阵是指元素全部是0(1)的矩阵
[4]矩阵的第一行是从0开始编号的,python中的各种编号基本上都是从0开始的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)