【NumPy高级运用】NumPy的Matrix与Broadcast高级运用以及IO操作

简介: 【NumPy高级运用】NumPy的Matrix与Broadcast高级运用以及IO操作

Matrix高级运用

Matrix函数的作用是返回给定大小的标识矩阵。
单位矩阵是一个方阵。从左上角到右下角的对角线上的元素(称为主对角线)均为1,其他所有元素均为0。
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/c157d43915c24198a13ee8904c348af4.png
在这里插入图片描述
大小为 5,类型位浮点型

import numpy.matlib 
import numpy as np 
print (np.matlib.identity(5, dtype =  float))

NumPy包含一个矩阵库NumPy.matlib。此模块中的函数返回一个矩阵,而不是数组对象。
矩阵是行和列元素的矩形阵列。
矩阵中的元素可以是数字、符号或数学表达式。以下是由6个数字元素组成的2行3列矩阵:
转置矩阵
在NumPy中,除了使用NumPy.transpose函数交换数组的维度外,还可以使用T属性。。
例如,通过使用t()函数,可以将具有m行和n列的矩阵转换为具有n行和m列的矩阵。

import numpy.matlib 
import numpy as np
 
print (np.matlib.empty((2,2)))

NumPy的Broadcast运用

广播是numpy对不同形状的数组执行数值计算的一种方式。数组上的算术运算通常在相应的元素上执行。
如果两个数组a和b的形状相同,即a.shape==b.shape,则a*b的结果是数组a和b的相应位的乘法。这需要相同的维数和每个维数的相同长度。

import numpy as np 
 
a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([1,2,3])
bb = np.tile(b, (4, 1))  # 重复 b 的各个维度
print(a + bb)

让所有输入数组与具有最长形状的数组对齐。形状中不足的部分通过在前面添加1来填充。
输出阵列的形状是输入阵列形状的每个维度的最大值。
如果输入数组的维度的长度与输出数组的相应维度的长度相同或其长度为1,则可以使用该数组进行计算,否则会发生错误。
当输入数组的维度长度为1时,该维度中的第一组值将用于沿该维度的操作。
简单理解:比较两个数组的每个维度(如果一个数组没有当前维度,则忽略它),满足以下要求:
数组具有相同的形状。
当前维度的值相等。
当前维度的值之一为1。

import numpy as np 
 
a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([0,1,2])
print(a + b)

IO操作

c 使用了关键字参数 sin_array

import numpy as np 
 
a = np.array([[1,2,3],[4,5,6]])
b = np.arange(0, 1.0, 0.1)
c = np.sin(b)
np.savez("runoob.npz", a, b, sin_array = c)
r = np.load("runoob.npz")  
print(r.files) 
print(r["arr_0"]) # 数组 a
print(r["arr_1"]) # 数组 b
print(r["sin_array"]) # 数组 c

Numpy可以在磁盘上读写文本数据或二进制数据。
NumPy为数组对象引入了一种简单的文件格式:npy。
npy文件用于存储重建阵列所需的数据、图形、数据类型和其他信息。
常见的IO功能有:
load()和save()函数是读取和写入文件数组数据的两个主要函数。默认情况下,数组以未压缩的原始二进制格式保存在扩展名为的文件中。npy。
savez()函数用于将多个数组写入文件。默认情况下,数组以未压缩的原始二进制格式保存在扩展名为.npz的文件中。
loadtxt()和savetxt()函数处理普通文本文件(.txt等)

import numpy as np 
 
b = np.load('outfile.npy')  
print (b)

文件:要保存的文件的扩展名为。npz。如果没有扩展。npz在文件路径的末尾,将自动添加扩展名。
Args:对于要保存的数组,可以使用关键字参数来命名数组。非关键字参数传递的数组将自动命名为arr_0、arr_1
Kwds:要保存的数组使用关键字名称。
NumPy数组的维数称为rank,rank是轴的数量,即数组的维数。一维阵列的秩是1,二维阵列的秩为2,依此类推。
在NumPy中,每个线性阵列称为轴,即维度。例如,二维阵列等效于两个一维阵列,第一个一维阵列中的每个元素都是一维阵列。所以一维数组是NumPy中的轴。第一个轴等效于基础数组,第二个轴是基础数组中的数组。轴的数量,秩,是阵列的维数。
在许多情况下,可以声明axis。轴=0,表示沿第0轴操作,即在每列上操作;轴=1,这意味着沿第一轴操作,即在每条线上操作。

相关文章
|
8天前
|
存储 Linux API
Linux应用开发基础知识——文件IO操作(三)
Linux应用开发基础知识——文件IO操作(三)
59 2
Linux应用开发基础知识——文件IO操作(三)
|
8天前
|
分布式计算 并行计算 编译器
NumPy 高级教程——并行计算
NumPy 高级教程——并行计算【1月更文挑战第3篇】
217 26
|
8天前
|
存储 机器学习/深度学习 Python
NumPy 高级教程——存储和加载数据
NumPy 高级教程——存储和加载数据 【1月更文挑战第1篇】
70 3
NumPy 高级教程——存储和加载数据
|
8天前
|
数据采集 异构计算
LabVIEW编程LabVIEW开发高级数据采集技术 操作数字IO 例程与相关资料
LabVIEW编程LabVIEW开发高级数据采集技术 操作数字IO 例程与相关资料
46 22
|
8天前
|
存储 JSON 安全
Python中的文件操作与文件IO操作
【5月更文挑战第14天】在Python中,文件操作是常见任务,包括读取、写入和处理文件内容。`open()`函数是核心,接受文件路径和模式(如'r'、'w'、'a'、'b'和'+')参数。本文详细讨论了文件操作基础,如读写模式,以及文件IO操作,如读取、写入和移动指针。异常处理是关键,使用`try-except`捕获`FileNotFoundError`和`PermissionError`等异常。进阶技巧涉及`with`语句、`readline()`、`os`和`shutil`模块。数据序列化与反序列化方面,介绍了
21 0
|
8天前
|
存储 Go 数据处理
Golang简单实现IO操作
Golang简单实现IO操作
11 1
|
8天前
|
监控 Java
Java一分钟之-NIO:非阻塞IO操作
【5月更文挑战第14天】Java的NIO(New IO)解决了传统BIO在高并发下的低效问题,通过非阻塞方式提高性能。NIO涉及复杂的选择器和缓冲区管理,易出现线程、内存和中断处理的误区。要避免这些问题,可以使用如Netty的NIO库,谨慎设计并发策略,并建立标准异常处理。示例展示了简单NIO服务器,接收连接并发送欢迎消息。理解NIO工作原理和最佳实践,有助于构建高效网络应用。
14 2
|
8天前
|
存储 测试技术 程序员
【Python】—— NumPy基础及取值操作
【Python】—— NumPy基础及取值操作
|
8天前
|
存储 数据挖掘 vr&ar
深入探索Numpy--索引,切片,随机数,文本操作等
深入探索Numpy--索引,切片,随机数,文本操作等
|
8天前
|
Java 大数据 数据库
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!