前言:
今天看官们对“求行列式c语言代码是什么”都比较珍视,姐妹们都需要学习一些“求行列式c语言代码是什么”的相关文章。那么小编在网摘上搜集了一些有关“求行列式c语言代码是什么””的相关内容,希望你们能喜欢,朋友们一起来学习一下吧!Numpy(numeric python),是 python 的一个开源数值计算库,主要用于
数组和矩阵计算。底层是 c 语言实现,运行效率远高于纯 python 代码。在
python 数据科学领域,numpy 是使用最广泛的工具包之一。
Numpy 提供了两种基本的对象:ndarray(N-dimensional Array Object) 和 ufunc
(Universal Function Object)
• ndarray 是存储单一数据类型的多维数组,包含 array 及其子类 matrix
• ufunc 则是能够对数组的每一个元素进行处理的函数
安装:pip install numpy
创建数组对象
Numpy 提供的 array 函数可以创建一维或多维数组,基本使用语法如下:
np.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)
相关属性
我们也可以通过内置函数来创建数组:
一维
np.arange(start,end,step)
等差数列,固定步长
np.linspace(start,end,num=50)
等差数列,固定个数
np.logspace(start,end,num=50,base=10) 等比数列
np.diag(array,k=0)
抽取对角线
多维
np.zeros(shape)
#用零填
np.zeros_like(a)
#复制a的shape,用零填
np.ones(shape)
#用1填
np.ones_like(a)
#复制a的shape,用1填
np.full(shape, fill_value) #用指定值填
np.identity(n)
#n行的单位矩阵(对角线为1)
np.eye(N, M=None, k=0) #类似上面,但可以指定列,k值对对角线平移
我们还可以使用 random 模块创建数组:
np.random.random()
:无约束条件下生成随机数组
np.random.rand()
:生成服从均匀分布的随机数组
np.random.randn()
:生成服从正态分布的随机数组
np.random.randint(low, high=None, size=None)
:生成指定区间的随机数组
random 模块其他常用函数:
数组数据类型
在 numpy 中,所有数组的数据类型是同质的,即数组中的所有元素类型必须是一
致的。这样做的好处是,更容易确定该数组所需要的存储空间。下面是 numpy 的
基本数据类型及其取值范围
我们知道 python 中 空值记为 None,而在 numpy 中的空值表示为: np.nan ,它是一个特殊的float。
我们也可以自定义数据类型:
创建一个存储餐饮企业库存信息的数据类型。其中,用一个长度为40个字符的字符串来记录商
品的名称,用一个64位的整数来记录商品的库存数量,最后用一个64位的单精度浮点数来记
录商品的价格,具体步骤如下。
数组的访问
• 通过索引访问
访问数组的方式 a[m][n]
访问矩阵的方式 a[m,n]
通过整数数组
a[[1,3,4]]
通过布尔数组
a[[True,Flase,True]]
• 通过切片访问
一维数组切片同 python 序列切片一致,a[start:stop:step]
多维数组切片,每个维度以逗号隔开,a[start:stop:step, start:stop:step]
或者 a[:][:]
数组变形
• reshape
a.reshape(),返回一个新的数组,原数组 a 不受影响
• resize
a.resize(),返回 None,修改的是原数组 a
数组扁平化
• ravel
a. ravel(),将多维压缩为一维,返回原数组的引用,对新结果修改,a会受影响
• flatten
a. flatten(),将多维压缩为一维,返回原数组的拷贝,对新结果修改,a不会受影响
二者均可以指定 order 的值为“
F”从列的方向上压扁
数组组合
• hstack
np.hstack((arr1,arr2))
数组横向组合
np.c_[arr1,arr2]
• vstack
np.vstack((arr1,arr2))
数组纵向组合
np.r_[arr1,arr2]
• concatenate
np. concatenate((arr1,arr2),axis=1)
数组横向组合
np. concatenate((arr1,arr2),axis=0)
数组纵向组合
数组分割
• hsplit
np.hsplit(arr,2)
数组横向分割
• vsplit
np.vsplit(arr,2)
数组横向分割
• split
np. split(arr,2,axis=0)
数组纵向分割
np. split(arr,2,axis=1)
数组横向分割
创建 numpy 矩阵
在NumPy中,矩阵是ndarray的子类,是继承自NumPy数组对象的二维数组对象。与数
学概念中的矩阵一样,NumPy中的矩阵也是二维的。
使用mat函数创建矩阵: matr1 = np.mat("1 2 3;4 5 6;7 8 9")
使用matrix函数创建矩阵:matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
区别:使用mat函数创建矩阵时,若输入matrix或ndarray对象,则不会为它们创建副本
很多时候会根据小的矩阵创建大的矩阵:
使用bmat函数合成矩阵:np.bmat("arr1 arr2; arr1 arr2"
矩阵的运算
在NumPy中,矩阵计算是针对整个矩阵中的每个元素进行的:
矩阵与数相乘:matr1*3
矩阵相加减:matr1±matr2
矩阵相乘:matr1*matr2
矩阵对应元素相乘:np.multiply(matr1,matr2)
矩阵特有属性:
矩阵的运算(此处以矩阵乘法和转置为例)
• numpy.linalg 中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的
函数(了解)
通用函数
• ufunc(universal function),全称通用函数,是一种能够对数组中所有
元素进行操作的函数
四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示
对每个数组中的元素分别进行四则运算,所以形状必须相同。
比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个
元素为每个数组对应元素的比较结果。
逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”。运算结果返回
布尔值。
• 四则运算
• 标量运算,会作用到整个数组上
• 比较运算
广播机制
广播(Broadcasting)是指不同形状的数组之间执行算术运算的方式。当使
用ufunc函数进行数组计算时,ufunc函数会对两个数组的对应元素进行计算。
进行这种计算的前提是两个数组的shape一致。若两个数组的shape不一致,
则NumPy会实行广播机制。
广播的条件:待扩展的轴的长度为 1 时
维度扩张和维数扩张:向最大值靠拢
读写文件
读写二进制数据
save 函数是以二进制的格式保存数据。
np.save("../tmp/save_arr",arr)
savez 函数可以将多个数组保存到一个文件中。
np.savez('../tmp/savez_arr',arr1,arr2)
load 函数是从二进制的文件中读取数据。
np.load("../tmp/save_arr.npy")
注意:存储时可以省略扩展名,但读取时不能省略扩展名。
读写文本文件
savetxt 函数是将数组写到某种分隔符隔开的文本文件中。
np.savetxt("../tmp/arr.txt", arr, fmt="%d", delimiter=",")
loadtxt 函数执行的是把文件加载到一个二维数组中。
np.loadtxt("../tmp/arr.txt",delimiter=",")
genfromtxt 函数面向的是结构化数组和缺失数据。
np.genfromtxt("../tmp/arr.txt", delimiter = ",")
排序
• 直接排序
np.sort(arr, axis=-1, kind=None, order=None)
axis 可指定排序的方向,0 纵向,1 横向
kind 可指定排序的算法,默认快排
也可使用 arr.sort() 来排序
• 间接排序
np.argsort(arr, axis=-1, kind=None, order=None) 或 arr.argsort()
返回值为重新排序值的下标
np.lexsort(keys, axis=-1) ,用法: np.lexsort((a,b,c))
按最后传入的数组排序
去重与重复
• 去重
• np.unique(arr)
• 重复
np.tile(arr,arr)
arr.repeat(3,axis=1)
tile 和 repeat 区别:tile 是对数组进行重复操作,repeat 是对数组中的每个元素进行
重复操作前者是函数,后者是方法。
常用统计函数
当 axis=0 时,表示沿着纵轴计算。当 axis=1时,表示沿着横轴计算。默认计算一个总值。
常用统计函数
• 案例:随机漫步
在学习完以上内容后还要多加练习!
标签: #求行列式c语言代码是什么