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

2022-12-23 08:25:49 浏览数 (1)

Matrix高级运用

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

大小为 5,类型位浮点型

代码语言:javascript复制
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列的矩阵。

代码语言:javascript复制
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的相应位的乘法。这需要相同的维数和每个维数的相同长度。

代码语言:javascript复制
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。

代码语言:javascript复制
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

代码语言:javascript复制
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等)

代码语言:javascript复制
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,这意味着沿第一轴操作,即在每条线上操作。

0 人点赞