NumPy库的核心是矩阵及其运算。

使用array()函数可以将python的array_like数据转变成数组形式,使用matrix()函数转变成矩阵形式。

基于习惯,在实际使用中较常用array而少用matrix来表示矩阵。

然后即可使用相关的矩阵运算了

import numpy as np
a = [[1,2,3],[4,5,5],[4,5,5]] len = a.shape[0] #多维数组的行数
print(a.dtype) #输出元素类型
#另外也还可以使用切片方式来处理数组

然后是涉及到的ufunc(universal function)运算,它是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。

 >>> x = np.linspace(0, 2*np.pi, 10)
# 对数组x中的每个元素进行正弦计算,返回一个同样大小的新数组
>>> y = np.sin(x)
>>> y
array([ 0.00000000e+00, 6.42787610e-01, 9.84807753e-01,
8.66025404e-01, 3.42020143e-01, -3.42020143e-01,
-8.66025404e-01, -9.84807753e-01, -6.42787610e-01,
-2.44921271e-16])

有的通用运算函数有:

np.sin()

np.cos()

np.add(a,b)

a.sum(axis=0,1)#axis为0计算全部数据的和,为1则按行计算数据的和

等等其它矩阵可参与的数据计算。

a = array([[1,2,3],[2,3,4]])

array(list): 创建矩阵或高维向量,例如a = array([[0,1,2,3],[4,5,6,7]]),传入参数也可以是元组

shape: 表示向量大小的元组,例如a.shape结果为tuple,形如(2,3)

ndim: 表示矩阵或高维向量的维数,例如矩阵a的a.ndim为2

size: 表示向量总元素数

itemsize: 表示元素所占字节数

nbytes: 表示向量所占字节数

real: 所有元素的实部,返回的还是矩阵形式

imag: 所有元素的虚部,返回的还是矩阵形式

flat: 用一维数组表示矩阵或高维向量(常用于顺序遍历)

T: 表示矩阵的转置矩阵(也适用于高维向量),例如:a.T

zeros(shape): 创建全0矩阵或高维向量,例如a = zeros((2,3))

ones(shape):创建全1矩阵或高维向量,例如a = ones((2,3))

add(matrix):将矩阵对应元素相加,结果相当于直接用加号

dot(matrix) 
矩阵乘法,注意必须满足“能乘”的要求 
如果是*,则需注意:

 aaa = array([[10,9,8],[7,6,5],[42,33,2]])
a = aaa.min(0) #取每一列的最小值,返回的是一个数组
aaa*aaa#相当于aaa**2: #[[ 100, 81, 64],
# [ 49, 36, 25],
# [1764, 1089, 4]] aaa*a #aaa每行元素分别与a相乘,结果为 #[[ 70, 54, 16],
# [ 49, 36, 10],
# [294, 198, 4]] a*aaa #结果与上相同
3*aaa #aaa中每个元素乘以3

reshape(shape) 
得到改变形状的矩阵,例如a = array([[1,2,3],[4,5,6]]).reshape((3,2))的结果为[[1,2],[3,4],[5,6]]。注意矩阵的大小不能改变,即reshape的参数表示的矩阵元素数必须等于原矩阵的元素数。 
transpose() 
得到矩阵的转置矩阵,a.transpose()相当于a.T 
swapaxes(d1,d2) 
调换给定的两个维度 
flatten() 
返回对应一维向量,例如:

 aaa = array([[10,9,8],[7,6,5],[42,33,2]])
aaa.flatten()
#返回值为:
array([10, 9, 8, 7, 6, 5, 42, 33, 2])

tolist() 
得到矩阵对象转化为list的结果

 aa = aaa.tolist()
aa返回为list型(每一行又是一个子list):
[[10, 9, 8], [7, 6, 5], [42, 33, 2]]
aa[0]
#返回为:
[10, 9, 8]

min(axis) 
得到所有元素中的最小值。当给定axis值(min(0)或min(axis=0))时,在该坐标上求最小值(得到数组) 
例如:

 aaa = array([[10,9,8],[7,6,5],[42,33,2]])
aaa.min()
返回为:aaa矩阵中所有元素的最小值
结果为:2
aaa.min(0)
返回为:aaa矩阵中所有列中元素的最小值
结果为:array([7, 6, 2])
aaa.min(1)
返回为:aaa矩阵中所有行中元素的最小值
结果为:array([8, 5, 2])

max(axis) 
得到所有元素中的最小值。缺省参数axis作用和min()相同 
sum() 
得到数组元素之和,得到的是一个数字。

也可以aaa.sum(axis),分别求每一行或者是每一列的元素之和

cumsum() 
得到累计和,即依次加一个元素求和的一维数组。 
例如:

 aaa.cumsum()
结果为:array([ 10, 19, 27, 34, 40, 45, 87, 120, 122])

prod() 
得到数组所有元素之积,是个数字。也可以aaa.sum(axis),分别求每一行或者是每一列的元素之积

cumprod() 
得到累计积,例子形式与上面cumsum()相同,这两个函数也都可以分坐标累计加和累计乘。 
mean() 
得到元素的平均数 
all() 
如果所有元素为真,返回真;否则返回假 
any() 
如果所有元素只要有一个真,返回真;否则返回假。 
特征值 
linalg.eigvals() 
返回A的特征值 
linalg.eig(A) 
返回A的特征值和特征向量,例如(eval, evec) = linalg.eig(A),其中eval的对角元为A的各个特征值,evec对应各列是相应特征向量。

 >>> a = array([[-1,1,0],
[-4,3,0],
[ 1,0,2]])
>>> eval, evec = linalg.eig(a)
>>> eval
array([ 2., 1., 1.])
>>> evec
array([[ 0. , 0.40824829, 0.40824829],
[ 0. , 0.81649658, 0.81649658],
[ 1. , -0.40824829, -0.40824829]])

即特征向量为λ1=2的(0,0,1)和λ2=λ3=1的(0.4,0.8,-0.4)

[Python学习] python 科学计算库NumPy—矩阵运算的更多相关文章

  1. Python科学计算库Numpy

    Python科学计算库Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1.简 ...

  2. 科学计算库Numpy基础&提升(理解+重要函数讲解)

    Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...

  3. python科学计算库numpy和绘图库PIL的结合,素描图片(原创)

    # 导入绘图库 from PIL import Image #导入科学计算库 import numpy as np #封装一个图像处理工具类 class TestNumpy(object): def ...

  4. Python科学计算库-Numpy

    NumPy 是 Python 语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,也是学习 python 必学的一个库. 1. 读取文件 numpy.gen ...

  5. [Python学习] python 科学计算库NumPy—tile函数

    在学习knn分类算法的过程中用到了tile函数,有诸多的不理解,记录下来此函数的用法.   函数原型:numpy.tile(A,reps) #简单理解是此函数将A进行重复输出 其中A和reps都是ar ...

  6. 给统计人讲Python(1)_科学计算库-Numpy

    本地代码是.ipynb格式的转换到博客上很麻烦,这里展示部分代码,了解更多可以查看我的git-hub:https://github.com/Yangami/Python-for-Statisticia ...

  7. Python 科学计算库numpy

    Numpy基础数据结构 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数 # 多维数组ndarray import numpy as np ar ...

  8. 第03章 科学计算库Numpy

    016.Numpy数据结构    关于矩阵运算的库 矩阵 017.Numpy基本操作 判断每一个元素的 018.Numpy矩阵属性 019.Numpy矩阵操作 020.Numpy常用函数 按列拼接就用 ...

  9. 科学计算库Numpy(1)

    Numpy 一,数据结构 数据类型: ndarray import numpy world_alchol = numpy.genfromtxt('world_alchol.txt',delimiter ...

随机推荐

  1. Base64原理

    一.Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的 ...

  2. 安卓贴图源码--->单点触控.多点触控.类似in/百度魔图

    效果如图: 类似in,百度魔图,的贴图功能  核心的地方:单/多点 旋转缩放后记录各个顶点小图标位置 引用这里 http://blog.csdn.net/xiaanming/article/detai ...

  3. ssh保持链接

    修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默认为0), 参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接,使用service ...

  4. JDBC ODBC区别

    一.JDBC(Java DataBase Connectivity standard) 1.JDBC,它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库. 2. 驱动程序(JDBC ...

  5. iOS为真机调试增加scribble来定位野指针

    尽管在ARC中,野指针出现的频率已经大大降低了,但是仍然会有野指针困扰着我们. 在模拟器调试中,我们可以开启scribble或者zombieObject来将已经释放的内存填充无意义的内容,能够将一些非 ...

  6. 网站建设中帝国cms如何循环调用栏目下级分类

    类似的形式,调用下级分类 ?php $bclassid=[!--self.classid--]; //选择当前栏目的id,如果调用指定栏目下的多级分类,则填写栏目id //取得本栏目下的子栏目 ? [ ...

  7. RobotFrameWork(二)Ride简单使用及快捷键

    一.简单示例 注意:以下操作使用到快捷键的,请先确保没有与其他软件的快捷键设置冲突,比如sogou拼音.有道词典等等 1.启动ride 启动ride方法: 1)  通过界面图标 2)  dos命令行: ...

  8. iOS compare 字符串比较

    NSString 比较字符串,我介绍一些常用的方法: NSString *value = @"1234567890"; 比较的方法: [value compare:(NSStrin ...

  9. GitHub团队项目合作流程

    已在另一篇博客中写出关于以下问题的解决,点此进入: 同步团队项目到本地时出现冲突怎么办? 项目负责人merge一个Pull Request后发现有错怎么回退? 目录: 零.前期准备 一.创建开发分支 ...

  10. php中"::"双冒号有什么作用

    PHP代码 lazycms::$sysname 第一次见到这种表现方式,请问是双冒号什么意思 答:直接属类的方法或属性.也就是static 静态方法或属性的使用.域运算符,一般用于在B类对象中使用A类 ...