以下代码可实现

  1. 矩阵中任意位置元素的取值
  2. 数组和矩阵中取值的区别
  3. 如何将矩阵中某行数据转换成易于在matplotlib上画的数据
  4. np.array([1,2]) 和 np.array([[1,2]])的区别

代码核心知识点

1.
a[row,column]: row:表示矩阵中的行,column:表示列
其中
row=[row_1,row_2], column=[column_1,column_2]
如         a[[0,1],[1]]:表示取01行中的第1****注意***a[[0,1],[1,2]]:不是表示01行中的第12列,具体看下**详细举例**
2.
a[:,1]:表示取a中所有行的第1列的数值<class 'numpy.int32'>
a[:,[1]]:取出的是矩阵形式,便于矩阵运算<class 'numpy.ndarray'>
a[:,:-1]:最后一列不取

详细举例

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])#a,b长的一样
b=np.mat([[1,2,3],[4,5,6],[7,8,9]])

#1.取一个元素时,数组和矩阵返回值一样
a1=a[1,1]

#2.取一列,数组和矩阵返回值不同
a2=a[:,2]
b2=b[:,2]

#3.取4个角(0,2行的0,2列),数组和矩阵返回值一样
a3=a[[0,2]]
a33=a3[:,[0,2]]#先取0,1行,再取0,1列. 直接一起写行列是错误的如:a3=a[[0,1],[0,1]]
b3=b[[0,2]]
b33=b3[:,[0,2]]

print("创建a矩阵:\n",a)
print("取一个元素:\n",a1)
print("数组取一列:\n",a2)
print("矩阵取一列:\n",b2)
print("数组取四个角:\n",a33)
print("矩阵取四个角:\n",b33)

#4.数组取一列:[3 6 9],可以直接用于matplotlib上画图,mat取一列:a=[[3] [6] [9]]],不用于matplotlib上画图,so
b4=b2.flatten()
print("将列展平:\n",b4)
b44=b2.flatten().A[0]
print('便于在matplotlib上读取数据:\n',b44)
创建a矩阵:
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
取一个元素:
 5
数组取一列:
 [3 6 9]
矩阵取一列:
 [[3]
 [6]
 [9]]
数组取四个角:
 [[1 3]
 [7 9]]
矩阵取四个角:
 [[1 3]
 [7 9]]
将列展平
 [[3 6 9]]
便于在matplotlib上读取数据
 [3 6 9]

从mat中拿出数据供matplotlib用

只有[1,2,3]是可直接在matplotlib上使用的,[[1,2,3]]是不可以的,so

import numpy as np
a=np.mat([[1,2,3]])
print(a)
print(a[0])这个方法失效的
print(a.getA()[0])#法1,2只能用于mat,要想提取array的参数,可用上述方法
print(a.flatten.A[0])#法2,
[[1 2 3]]
[[1 2 3]]
[1 2 3]
[1 2 3]

np.array([1,2]) 和 np.array([[1,2]])的区别

在这里插入图片描述
一维数组与矩阵相乘,结果仍然是一维数组。相乘原则与矩阵乘法原则相同,
但是一维数组不能转置,在进行矩阵之间的计算时会出现问题,所以要规范书写,一劳永逸

import numpy as np
a=np.array([1,2])
b=np.array([[1,2]])
c=np.array([[4,5],[2,3]])
print(type(a),a.shape)#可以看出a只有一个元素,为一维数组,b的shape有两个元素,因此是二维数组
print(type(b),b.shape)

#使用时出现的问题
print(np.dot(a,c))
print(np.dot(b,c))

print((np.dot(a,c)).T)#不能转置
print((np.dot(b,c).T))

#输出
<class 'numpy.ndarray'> (2,)
<class 'numpy.ndarray'> (1, 2)
[ 8 11]
[[ 8 11]]
[ 8 11]
[[ 8]
 [11]]

对matplotlib感兴趣的可看
matplotlib绘制多个子图(汉字标题,XY轴标签)& PIL.Image 11行读取文件夹中照片

总结

  1. 为了方便矩阵的数据在matplotlib上显示,最开始时,将矩阵a变成数组,np.array(a)再进行取元素操作,array取元素简单。

  2. 规范矩阵写法,不要写成一维数组形式。

  3. 对于两维的tensor向量a.shape=torch.Size([55, 55])是直接可以plt.imshow(a)画出来的

碰巧,如果你看到了这篇文章,并且觉得有用的话 那就给个三连吧!
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐