首页 > 其他分享 >深度学习与图像识别(numpy2)

深度学习与图像识别(numpy2)

时间:2024-07-26 21:09:29浏览次数:7  
标签:图像识别 matrix 矩阵 print 深度 np array numpy numpy2

获取numpy属性

首先,我们通过Numpy中的一个方法 arange(n),生成0到n-1的数组。

np.arange(15)
返回的结果是array([ 0, 1, 2,3,4,5, 6,7, 8,9,10,11,12,13,14)

 

 然后,再通过Numpy 中的reshape(row,column)方法,自动构架一个多行多列的array对象。 

a = np.arange(15) .reshape(3,5) #代表3行5列 
 array([[ 0, I, 2, 3, 41,
 [ 5, 6, 7, 8, 91,
[10, 11,12,13,1411)

通过Numpy提供的shape属性获取Numpy数组的行数与列数

print(a.shape) 

可以看到返回的结果是一个元组(tuple),第一个3代表的是3行,第二个5代表的是5列:(3,5)

我们可以通过.ndim来获取Numpy数组的维度

 import numpy as np
 x= np.arange(15)
 print(x.ndim)*输出x向量的维度,这时能看到的维度是1维
x=x.reshape(3,5) #将x向量转为三行五列的二维矩阵
Print(X.ndim) #输出x矩阵的维度,这时能看到的维度是2维


reshape 方法的特别用法
如果只关心需要多少行或者多少列,其他由计算机自己来算,那么这个时候我们可以使用如下方法:

x.reshape(15,-1)#我关心的是我只要15行,列由计算机自己来算 
x.reshape(-1,15)#我关心的是我只要15列,行由计算机自己来算


2.3.4 Numpy 数组索引
Numpy 支持类似 list的定位操作,

import numpy as np
matrix = np.array([1,2,3],[20,30,4011)
print(matrix[0,11)
得到的结果是 2。

上述代码中的 matrix[0,1],0代表的是行,在Numpy中,0代表起始的第一个,所以取的是第1行,之后的1代表的是列,所以取的是第2列。那么,最后的输出结果是取第一行第二列,也就是2。
2.3.5 切片
Numpy 支持类似 list的切片操作,示例代码如下:

import numpy as np
 matrix = np.array([15,10,151,
                            [20,25,30],
                            [35,40,45])
print(matrix[:,1]) 
print(matrix[:,0:2])
 print(matrix[1:3,:])
 print(matrix[1:3,0:2])
print(matrix[:,1])语法代表选择所有的行,而且列的索引是1的数据,因此返的结果是 10,25,40。
print(matrix[:,0:2]) 代表的是选取所有的行,而且列的索引是0和1的数据。

print(matrix[1:3,:]) 代表的是选取所有的列,而且行的索引值是1和2的数据。
print(matrix[1:3,0:2])代表的是选取行的索引是1和2,而且列的索引是0和1的所有数据

 Numpy 中的矩阵运算
矩阵运算(加、减、乘、除)即两个的基本运算必须具有相同的行数与列数。

import numpy as np 
myones = np.ones([3,3])  
myeye =np.eye(3)           #生成一个对角线的值为1,其余值都为0的三行三列矩阵
print(myeye) print (myones-myeye)
 

[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[0. 1. 1.]
[1. 0. 1.]
[1. 1. 0.]]

numpy.eye(N,M=None,k=0,dtype=<type ‘ float’>)中第一个参数输出矩阵(行数=列数),第三个参数默认情况下输出的是对角线的值全为1,其余值全为0。


矩阵函数 说明
np.sin(a) 对矩阵a中的每个元素取正弦,sin(x)
np.cos(a) 对矩阵a中的每个元素取余弦,cos(x)
np.tan(a) 对矩阵=中的每个元素取正切,tan(x)
np.sqrt(a) 对矩阵a中的每个元素开根号√x
np.abs(a) 对矩阵a中的每个元素取绝对值
(1)矩阵之间的点乘
矩阵真正的乘法必须满足第一个矩阵的列数等于第二个矩阵的行数,矩阵乘法的函数为 dot。示例代码如下:

import numpy as np
mymatrix = np,array([1,2,3],[4,5,6]])
a=np.array([1,2],[3,4],[5,6]])
print (mymatrix.shape[1]== a.shapet[0])??
print (mymatrix,dot(a))


[[22 28]
 [49 64]]

 将mymatrix的第一行[1,2,3]与n矩阵的第一列(1.3,5)相乘然后相加,接着将mymatrix 的第一行[1,2,3]与a矩阵的第二列(2.4,6)相乘然后相加,以此类推。????

(2)矩阵的转置
矩阵的转置是指将原来矩阵中的行变为列

import numpy as np
a=np.array([[1,2,3],[4,5.6]])
print(a.T)
输出结果如下:
[[1 4]
[2 5]
[3 6]]

(3)矩阵的逆

import numpy as np
import numpy.linalg as lg
A = np.array([[0,1],[2,3]])
invA = lg.inv(A) print(invA)
print(A.dot(invA))
输出结果如下:
[[-1.5 0.5]
 [ 1.  0.]] ?????逆矩阵就是,原矩阵A.dot(invA)以及逆矩阵invA.dot(A)的结果都为单位矩阵。并不是所有的矩阵都有逆矩阵。??????

 数据类型转换
Numpy ndarray数据类型可以通过参数 dtype进行设定,而且还可以使用参数astype来
转换类型。astype调用会返回一个新的数组,也就是原始数据的备份。

比如,将String(String代表字符串) 转换成 float。

vector=numpy.arrary(["1","2","3"])
vector=vector.astype(float)

Numpy的统计计算方法 
NumPy内置了很多计算方法,其中最重要的统计方法大概有
sum():计算矩阵元素的和:矩阵的计算结果为一个一维数组,需要指定行或者列,
mean():计算矩阵元素的平均值;矩阵的计算结果为一个一维数组,需要指定行或者列 
max():计算矩阵元素的最大值;矩阵的计算结果为一个一维数组,需要指定行或者列
median():计算矩阵元素的中位数。 
需要注意的是,用于这些统计方法的数值类型必须是int或者 float。 

vector = numpy.array([5,10,15,20])
vector.sum()
50

矩阵示例代码如下:

matrix=
array([[ 5, 10,15],
          [20,10,30],
          [35,40,45]])
matrix.sum(axia=1)
array(l[30, 60, 120])
matrix.sum(axis=0) 
array([60,60,90])

axis=1计算的是行的和,结果以列的形式展示。axis =0计算的是列的和,结果以行的形式展示。????
官方推荐教程(https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)

Numpy 中的 arg 运算
argmax函数就是用来求一个array中最大值的下标。简单来说,就是最大的数所对应的索引(位置)是多少。

index2 = np.argmax([1,2,6,3,2])      
返回的是2

argmin函数可用于求一个array中最小值的下标,用法与argmax类似。

index = np.argmin([1.2,6,3,2])
返回的是0

Numpy矩阵的排序和如何使用索引

import numpy as np 
x = np,arange(15)
print(x)   #" array([0,1, 2,3,4,5,6,7,8,9........14])
np.random.shuffle(x) #随机打乱
print(x)   #array(l 8. 13,12, 3, 9,2,10,0,11.........])
sx = np.argsort(x) #从小到大排序,返回索引值
print(sx)   #[7.12. 5. 3. 13. 9 .14. 11 .0 .4. 6 .8. 2. 1. 10]

Fancylndexing
要索引向量中的一个值是比较容易的,比如通过x[0]来取值。但是,如果想要更复杂地取数,比如,需要返回第3个、第5个以及第8个元素时,应该怎么办?

import numpy as np
x = np.arange(15) 
ind = [3,5,8]
print(x[ind])

我们也可以从一维向量中构成新的二维矩阵

import numpy as np 
x =np.arange(15)
np.random.shuffle(X)
ind = np.array([[0,2],[1,3]])# 第一行需要取x向量中索引为0的元素,以及索引为2的元素,第二行需要取x向量中索引为1的元素以及索引为3的元素 
print (x)
print(x[ind])

[3 2 7 12 9 13 11 14 10 5 4 1 6 8 0]
[[3 7]
[2 12]]


对于二维矩阵的fancyindexing

import numpy as np
x=mp.arange(16)
x=x.reshape(4,-1)
row = np.array([0,1.2]) 
col=np,array([1,2,3])
print(x[row,col)) #相当于取三个点,分别是(0,1),(1,2),(2,3)
print(x[1:3,co1])#相当于取第2、3行,以及需要的列

 Numpy数组比较(数据比较之后会产生boolean值 )

import numpy as np
matrix = np.array([
                  [5, 10,15],
                  [20, 25, 30],
                  [35,40,45]
])
                          
m= (matrix ==25) 
print (m) 
[False False Falsel[False True Falsel[False False False]
import numpy as np 
matrix = np.array([[15,10,15],
[20,25,30],
[35,40,45] ]) second_column_25 =(matrix[:,1]== 25) print (second_column_25)matrix[:,1] #代表的是所有的行,以及索引为1的列,即[10,25,40] print(matrix[second_column_25,:])#代表的是返回true值的那一行数据
matrix[second_column_25,:]???????

[False,True False]
 [20,25,30]。

 

拼接多个条件,“&”代表的是“且”,“|”代表的是“或”。

vector=np.array([5,10,11,12]),

equal_to_five_and_ten = (vector = =5) & (vector ==10)返回的都是false,

equal_ to_five_or_ten = (vector ==5) | (vector==10),则返回的是[True,True,False,False]。
通过np.count_nonzero(x<=3)来计算小于等于3的元素个数,1代表 True,0代表 False。

import numpy as np  
  
# 创建一个一维数组  
arr_1d = np.array([0, 1, 2, 0, 3, 0, 4])  
# 计算非零元素的数量  
nonzero_count_1d = np.count_nonzero(arr_1d)  
print(nonzero_count_1d)  # 输出: 4    返回的不是1和0?          
  
# 创建一个二维数组  
arr_2d = np.array([[0, 1, 0], [2, 0, 3], [0, 4, 0]])  
# 计算整个二维数组中非零元素的数量  
nonzero_count_2d = np.count_nonzero(arr_2d)  
print(nonzero_count_2d)  # 输出: 4 
  
# 沿着第一个轴(行)计算非零元素的数量  
nonzero_per_row = np.count_nonzero(arr_2d, axis=0)  
print(nonzero_per_row)  # 输出: [1 2 1] 表示每行分别有1,2,3个非零元素  
  
# 沿着第二个轴(列)计算非零元素的数量  
nonzero_per_col = np.count_nonzero(arr_2d, axis=1)  
print(nonzero_per_col)  # 输出: [1 2 1] 表示每列分别有1, 2, 1个非零元素

 

np.any(x ==0),只要x中有一个元素等于0就返回 True。

np.all(x>0)则需要所有的元素都大于0才返回True。



标签:图像识别,matrix,矩阵,print,深度,np,array,numpy,numpy2
From: https://www.cnblogs.com/candice1/p/18326150

相关文章

  • 轻量级图像识别算法笔记(一)
    轻量级图像识别算法一、什么是轻量级图像识别算法?为什么要用轻量级图像识别算法?什么是轻量级图像识别算法?​轻量级识别算法是指那些设计和优化以在资源受限环境中高效运行的机器学习和深度学习算法。为什么要使用轻量级图像识别算法?设备限制:很多实际应用场景中,嵌入式......
  • 【小白记录深度学习】——物理信息神经网络(PINNs)
    本文的内容基于论文解读,解读的论文为Physics-InformedNeuralNetworksforShellStructures和RecentAdvancesandApplicationsofMachineLearninginExperimentalSolidMechanics:AReview什么是物理信息神经网络PINNs(Physics-informedNeuralNetworks,物理信息神......
  • 深度学习路线总结 (含链接)
    深度学习一.入门资料完备的AI学习路线,最详细的中英文资源整理⭐️AiLearning:机器学习-MachineLearning-ML、深度学习-DeepLearning-DL、自然语言处理NLMachine-Learning数学基础矩阵微积分机器学习的数学基础CS229线性代数与概率论基础机器学习基础快......
  • 深度学习与图像识别学习笔记day2(numpy数组的方法)
    创建numpy数组importnumpyasnpnparray=np.array([iforiinrange(10)])print(nparray)创建数值都为0的数组importnumpyasnpa=np.zeros(10)print(a)得到的结果0都有一个小数点,调用a.dtype创建的向量类型为dtype(‘float64‘)创建整数型a=np.zeros(10,d......
  • Listen(sockfd,backlog)监听函数的第二个参数到底是什么?深度解释
    listen队列剖析intlisten(intsockfd,intbacklog)   backlog: 监听套接字队列对于一个调用监听的套接字,系统会维护给这个套接字两个队列1.未完成连接队列 //当客户端发生三次握手的第一次syn包给服务器的时候,服务器就会再未完成队列中创建一个跟这个syn包对......
  • 【MATLAB源码】机器视觉与图像识别技术(4)---模式识别与视觉计数
    系列文章目录第一篇文章:【MATLAB源码】机器视觉与图像识别技术—视觉系统的构成(视频与图像格式转换代码及软件下载)第二篇文章:【MATLAB源码】机器视觉与图像识别技术(2)—图像分割基础第三篇文章:【MATLAB源码】机器视觉与图像识别技术(2)续—图像分割算法第四篇文章:【MATL......
  • 使用Python实现深度学习模型:语言翻译与多语种处理
    引言语言翻译和多语种处理是自然语言处理(NLP)中的重要任务,广泛应用于跨语言交流、国际化应用和多语言内容管理等领域。通过使用Python和深度学习技术,我们可以构建一个简单的语言翻译与多语种处理系统。本文将介绍如何使用Python实现这些功能,并提供详细的代码示例。所需工具......
  • 学习资源系列之《Python深度学习基于PyTorch》
     前言近期应部分读者朋友的强烈邀请,希望推荐一本python深度学习实操的书籍。呐,今天为大家推荐小编偶然发现的这一本珍藏好书:《Python深度学习基于PyTorch》,文末附电子版获取方式《Python深度学习基于PyTorch》BriefIntroduction前言面对众多的深......
  • Transformer模型的可视化介绍|深度学习什么是 GPT|探索流经大模型的数据
    本文文字内容来自于《Transformer模型的可视化介绍|深度学习什么是GPT|探索流经大模型的数据》,该视频由CDA数据科学研究院赵安豆博士重磅推出,有兴趣的小伙伴可以点击下方链接观看,了解更多关于Transformer模型的内容https://edu.cda.cn/goods/show/3645引言本文将深入探讨G......
  • 深度学习与图像识别学习笔记day1
    文件不可以与现有的包重名哦1、Theano(旧)一个python库,可用于定义、优化与计算数学表达式,特别是多维数组(numpy.ndarray),可以理解为一个数学表达式的编译器:用符号式语言定义程序员所需的结果,并可以高效的运行与GPU与CPU上。2、Tensorflow(新)基于计算图实现自动微分系统,tensorflow......