首页 > 其他分享 >NumPy学习12

NumPy学习12

时间:2023-06-20 19:34:40浏览次数:36  
标签:---- 12 outfile 矩阵 学习 np print NumPy

今天学习了

22, NumPy矩阵乘法
23, NumPy IO操作
numpy_test12.py :
import numpy as np

'''
22, NumPy矩阵乘法
矩阵乘法是将两个矩阵作为输入值,并将 A 矩阵的行与 B 矩阵的列对应位置相乘再相加,从而生成一个新矩阵。
注意:必须确保第一个矩阵中的行数等于第二个矩阵中的列数,否则不能进行矩阵乘法运算。

矩阵乘法运算被称为向量化操作,向量化的主要目的是减少使用的 for 循环次数或者根本不使用。
这样做的目的是为了加速程序的计算。
'''
print("----22, NumPy矩阵乘法----")

'''
(1) np.multiply()
multiple() 函数用于两个矩阵的逐元素乘法.
'''
print("----(1) np.multiply()----")
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3)
print('arr1 : ', arr1)
arr2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3)
print('arr2 : ', arr2)
# 两个矩阵的逐元素乘法
result = np.multiply(arr1,arr2)
print('result : ', result)
'''
arr1 :  [[[1 2 3]
          [4 5 6]
          [7 8 9]]]
arr2 :  [[[9 8 7]
          [6 5 4]
          [3 2 1]]]
result :  [[  [ 9 16 21]
              [24 25 24]
              [21 16  9]]]
'''

'''
(2) np.matmul()
matmul() 用于计算两个数组的矩阵乘积。
'''
print("----(2) np.matmul()----")
arr3 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], ndmin=3)
print('arr3 : ', arr3)
arr4 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3)
print('arr4 : ', arr4)
# 两个数组的矩阵乘积
result = np.matmul(arr3,arr4)
print('result : ', result)
'''
arr3 :  [[[1 2 3]
          [4 5 6]
          [7 8 9]]]
arr4 :  [[[9 8 7]
          [6 5 4]
          [3 2 1]]]
result :  [[  [ 30  24  18]
              [ 84  69  54]
              [138 114  90]]]
'''

'''
(3) np.dot()
dot() 函数用于计算两个矩阵的点积。
'''
print("----(3) np.dot()----")
arr5 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9],], ndmin=3)
print('arr5 : ', arr5)
arr6 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]], ndmin=3)
print('arr6 : ', arr6)
# 两个矩阵的点积
result = np.dot(arr5, arr6)
print('result : ', result)
'''
arr5 :  [[[1 2 3]
          [4 5 6]
          [7 8 9]]]
arr6 :  [[[9 8 7]
          [6 5 4]
          [3 2 1]]]
result :  [[  [[ 30  24  18]]

              [[ 84  69  54]]
            
              [[138 114  90]]
          ]]
'''

'''
23, NumPy IO操作
NumPy  IO 操作是以文件的形式从磁盘中加载 ndarray 对象。
在这个过程中,NumPy 可以两种文件类型处理 ndarray 对象,一类是二进制文件(以.npy结尾),另一类是普通文本文件。

上述两种文件格式,分别对应着不同的 IO 方法,如下所示:

NumPy       IO操作方法
文件类型	    处理方法
二进制文件	load() 和 save()
普通文本文件	loadtxt() 和 savetxt()
我们知道,文件会被保存在不同的计算机上(比如 Linux、Windows、MacOSX 等)。
为了不受的计算机架构影响,NumPy 开发团队给 ndarray 对象引入了一种.npy文件格式,
通过它来件实现对 ndarray 对象的保存。
'''
print("----23, NumPy IO操作----")
'''
(1) numpy.save()
numpy.save() 方法将输入数组存储在.npy文件中。
numpy.save(file, arr, allow_pickle=True, fix_imports=True)

参数说明:
file:保存后的文件名称,其文件类型为.npy;
arr:要保存的数组
allow_pickle:可选项,布尔值参数,允许使用 pickle 序列化保存数组对象。 
fix_imports:可选项,为了便于在 Pyhton2 版本中读取 Python3 保存的数据。
'''
print("----(1) numpy.save()----")
arr7 = np.array([1, 2, 3, 4, 5])
print('arr7 : ', arr7)
# 输入数组存储在.npy文件中
np.save('outfile', arr7)
print('输入数组存储在outfile.npy文件中')
# 使用 load() 从 outfile.npy 文件中加载数据
arr8 = np.load('outfile.npy')
print('从 outfile.npy 文件中加载数据')
print('arr8 : ', arr8)
'''
arr7 :  [1 2 3 4 5]
输入数组存储在outfile.npy文件中
从 outfile.npy 文件中加载数据
arr8 :  [1 2 3 4 5]
'''

'''
(2) savetxt()
savetxt() 和 loadtxt() 分别表示以文本格式存储数据或加载数据。其中 savetxt() 的语法格式如下:
np.savetxt('filename文件路径', self.task, fmt="%d", delimiter=" ")

参数说明:
filename:表示保存文件的路径;
self.task: 要保存数组的变量名;
fmt="%d": 指定保存文件的格式,默认是十进制;
delimiter=" "表示分隔符,默认以空格的形式隔开。
'''
print("----(2) savetxt()----")
arr9 = np.array([1,2,3,4,5])
print('arr9 : ', arr9)
np.savetxt('outfile.txt', arr9)
print('输入数组存储在outfile.txt 文本文件中')
#使用loadtxt重载数据
arr10 = np.loadtxt('outfile.txt')
print('从 outfile.txt 文本文件中加载数据')
print('arr10 : ', arr10)
'''
arr9 :  [1 2 3 4 5]
输入数组存储在outfile.txt 文本文件中
从 outfile.txt 文本文件中加载数据
arr10 :  [1. 2. 3. 4. 5.]
'''

  



标签:----,12,outfile,矩阵,学习,np,print,NumPy
From: https://www.cnblogs.com/xh2023/p/17494475.html

相关文章

  • JSON及XML学习总结
    1.手写JSON中字符串转java对象的方式//构建java对象Studentstudent=newStudent();//利用JSON类中的toJSON对象转换成JSON字符串Strings=JSON.toJSON(Student).toString();2.手写java对象转JSON字符串的方式Stringss="{\"skills\":[\"1\",\"2\",\"足球\&qu......
  • Docker --镜像容器学习笔记
    Docker简介准备工作1.前提知识-linux-Git2.课程定位和范围(基于JavaEE方向)-JavaEEjavaSpringMVC/springBoot/mybatis...docker基础篇-DockerGoSwarm/compose/machine/mesos/k8s/---CI/CDjenkinds整合docker高级篇是什么1.问题:为什......
  • 【whale-starry-stl】01天 list学习笔记
    一、知识点1.std::bidirectional_iterator_tagstd::bidirectional_iterator_tag是C++标准库中定义的一个迭代器类型标签,用于标识支持双向遍历的迭代器类型。在C++中,迭代器是一种泛型指针,用于遍历容器中的元素。迭代器类型标签用于标识迭代器的特性,从而在算法中选择合适的......
  • kafka的学习之一_带SASL鉴权的集群安装与启动
    kafka的学习之一_带SASL鉴权的集群安装与启动背景想开始一段新的里程.可能会比现在累,可能会需要更多的学习和努力.kafka可能就是其中之一.自己之前总是畏缩不前.不想面对很多压力.年龄已经很大了,必须得向前看继续努力了.关于kafkakafka是linked开源的一套高效持......
  • kafka的学习之二_kafka的压测与GUI管理
    kafka的学习之二_kafka的压测与GUI管理第一部分创建topiccd/root/kafka_2.13-3.5.0bin/kafka-topics.sh--create--bootstrap-server10.110.139.184:9093--command-configconfig/sasl.conf--replication-factor3--partitions3--topiczhaobsh01bin/kafka-topics......
  • opencv学习笔记(四)
    梯度运算:是图像形态学中的一种操作,用于检测图像中的边缘。它通过结合膨胀(Dilation)和腐蚀(Erosion)操作来计算图像的梯度。importcv2importnumpyasnp#读取图像image=cv2.imread('input.jpg',cv2.IMREAD_GRAYSCALE)#定义结构元素(内核)kernel=np.ones((5,5),np.u......
  • UG NX12.0 完整版安装图文教程、注册激活破解方法
    下载UG12.0中文版压缩包,pan.baidu.com/s/1_yYzHgKEznoqe_ijkDDuYw?pwd=rsyh并解压UGNX12.0版压缩包,打开文件,用记事本的方式打开splm8文件。右击计算机属性,高级设置,即可看到你电脑的计算机全面,然后全选复制。把splm8里面的管家二字删掉,将计算机名粘贴进去,然后保存文件,关掉即......
  • redis学习十一:数据类型命令及落地运用 (GEO)
    redis之地理空间GEO1.geoaddkeylongitudelatitude名称;zrangekey0-1查看如果出现乱码问题登录时候加上--raw 2.geoposkey名称获取对应经纬度 3.用geohash表示 4.geodist距离多少km/m 5.georadius这个尚硅谷的杨哥写的这个比较详细,直接截图照搬了。 6......
  • 【numpy基础】--基础操作
    numpy作为一个强大的数值计算库,提供了对多维数组的很多便捷操作。承接上一篇数组的创建,本篇主要介绍一些数组的基本操作。1.子数组首先介绍获取子数组的方法,提取已有数据的一部分来参与计算是比较常用的功能。对于一维数组,提取子数组:arr[start:stop:step]start:从哪个下标开......
  • 【机器学习】最小二乘法(代数&矩阵推导)
    前置知识平方损失函数假设上图的红线就是拟合出的函数,那么每个数据点(xi,yi)所对应的误差就是上面的误差往往也称之为「残差」。但是在机器学习中,我们更喜欢称作「损失」,即真实值和预测值之间的偏离程度。那么,对......