本文主讲Python中Numpy数组的类型、全0全1数组的生成、随机数组、数组操作、矩阵的简单运算、矩阵的数学运算。

尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便。

定义数组

>>> import numpy as np

>>> m = np.array([[1,2,3], [2,3,4]]) #定义矩阵,int64

>>> m

array([[1, 2, 3],

[2, 3, 4]])

>>> m = np.array([[1,2,3], [2,3,4]], dtype=np.float) #定义矩阵,float64

>>> m

array([[1., 2., 3.],

[2., 3., 4.]])

>>> print(m.dtype) #数据类型

float64

>>> print(m.shape) #形状2行3列

(2, 3)

>>> print(m.ndim) #维数

2

>>> print(m.size) #元素个数

6

>>> print(type(m))

还有一些特殊的方法可以定义矩阵

>>> m = np.zeros((2,2)) #全0

>>> m

array([[0., 0.],

[0., 0.]])

>>> print(type(m)) #也是ndarray类型

>>> m = np.ones((2,2,3)) #全1

>>> m = np.full((3,4), 7) #全为7

>>> np.eye(3) #单位矩阵

array([[1., 0., 0.],

[0., 1., 0.],

[0., 0., 1.]])

>>> np.arange(20).reshape(4,5) #生成一个4行5列的数组

>>>

>>> np.random.random((2,3)) #[0,1)随机数

array([[0.51123127, 0.40852721, 0.26159126],

[0.42450279, 0.34763668, 0.06167501]])

>>> np.random.randint(1,10,(2,3)) #[1,10)随机整数的2行3列数组

array([[5, 4, 9],

[2, 5, 7]])

>>> np.random.randn(2,3) #正态随机分布

array([[-0.29538656, -0.50370707, -2.05627716],

[-1.50126655, 0.41884067, 0.67306605]])

>>> np.random.choice([10,20,30], (2,3)) #随机选择

array([[10, 20, 10],

[30, 10, 20]])

>>> np.random.beta(1,10,(2,3)) #贝塔分布

array([[0.01588963, 0.12635485, 0.22279098],

[0.08950147, 0.02244569, 0.00953366]])

操作数组

>>> from numpy import *

>>> a1=array([1,1,1]) #定义一个数组

>>> a2=array([2,2,2])

>>> a1+a2 #对于元素相加

array([3, 3, 3])

>>> a1*2 #乘一个数

array([2, 2, 2])

##

>>> a1=np.array([1,2,3])

>>> a1

array([1, 2, 3])

>>> a1**3 #表示对数组中的每个数做立方

array([ 1, 8, 27])

##取值,注意的是它是以0为开始坐标,不matlab不同

>>> a1[1]

2

##定义多维数组

>>> a3=np.array([[1,2,3],[4,5,6]])

>>> a3

array([[1, 2, 3],

[4, 5, 6]])

>>> a3[0] #取出第一行的数据

array([1, 2, 3])

>>> a3[0,0] #第一行第一个数据

1

>>> a3[0][0] #也可用这种方式

1

>>> a3

array([[1, 2, 3],

[4, 5, 6]])

>>> a3.sum(axis=0) #按行相加,列不变

array([5, 7, 9])

>>> a3.sum(axis=1) #按列相加,行不变

array([ 6, 15])

矩阵的数学运算

关于方阵

>>> m = np.array([[1,2,3], [2,2,3], [2,3,4]]) #定义一个方阵

>>> m

array([[1, 2, 3],

[2, 2, 3],

[2, 3, 4]])

>>> print(np.linalg.det(m)) #求行列式

1.0

>>> print(np.linalg.inv(m)) #求逆

[[-1. 1. 0.]

[-2. -2. 3.]

[ 2. 1. -2.]]

>>> print(np.linalg.eig(m)) #特征值 特征向量

(array([ 7.66898014+0.j , -0.33449007+0.13605817j,

-0.33449007-0.13605817j]), array([[-0.47474371+0.j , -0.35654645+0.23768904j,

-0.35654645-0.23768904j],

[-0.53664812+0.j , 0.80607696+0.j ,

0.80607696-0.j ],

[-0.6975867 +0.j , -0.38956192-0.12190158j,

-0.38956192+0.12190158j]]))

>>> y = np.array([1,2,3])

>>> print(np.linalg.solve(m, y)) #解方程组

[ 1. 3. -2.]

矩阵乘法

矩阵乘:按照线性代数的乘法

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

>>> b = np.array([[1,2], [3,4], [5,6]])

>>> a

array([[1, 2, 3],

[2, 3, 4]])

>>> b

array([[1, 2],

[3, 4],

[5, 6]])

>>> np.dot(a, b) #方法一

array([[22, 28],

[31, 40]])

>>> np.matmul(a,b) #方法二

array([[22, 28],

注:一维数组之间运算时,dot()表示的是内积。

点乘:对应位置相乘

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

>>> b = np.array([[1,1],[2,2]])

>>> a

array([[1, 2],

[3, 4]])

>>> b

array([[1, 1],

[2, 2]])

>>> a * b #方法一

array([[1, 2],

[6, 8]])

>>> np.multiply(a, b) #方法二

array([[1, 2],

[6, 8]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python中文读音ndarray-Python中Numpy ndarray的使用详解相关推荐

  1. python ndarray find_Python中Numpy ndarray的使用详解

    python: numpy的ndarray和array有什么区别?为什么小编以为小编够坚强了,可还是敌不过你的执着你的冷酷. What is the difference between ndarra ...

  2. python迭代器创建序列_Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的 ...

  3. python getopt_python 5种 statsPython中的getopt函数使用详解

    函数原型: getopt.getopt(args, shortopts, longopts=[]) 参数解释: args:args为需要解析的参数列表.一般使用sys.argv[1:],这样可以过滤掉 ...

  4. python获取键盘按键_Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...

  5. python decimal类型转化_python中的decimal类型转换实例详解

    [Python标准库]decimal--定点数和浮点数的数学运算 作用:使用定点数和浮点数的小数运算. Python 版本:2.4 及以后版本 decimal 模块实现了定点和浮点算术运算符,使用的是 ...

  6. python中文读音ndarray-Python开发:NumPy学习(一)ndarray数组

    一.数据维度 一个数据表达一个含义,一组数据表达一个或多个含义. 数据维度概念:一组数据的组织形式,其中有一维数据.二维数据.多维数据.高维数据. 1. 一维数据 一维数据由对等关系的有序或无序数据构 ...

  7. python的count函数_python中count函数的用法详解

    python中count函数的用法 count()函数 描述:统计字符串里某个字符出现的次数,可以选择字符串索引的起始位置和结束位置. 语法:str.count("char", s ...

  8. python编程顺序_Python编程中归并排序算法的实现步骤详解

    基本思想:归并排序是一种典型的分治思想,把一个无序列表一分为二,对每个子序列再一分为二,继续下去,直到无法再进行划分为止.然后,就开始合并的过程,对每个子序列和另外一个子序列的元素进行比较,依次把小元 ...

  9. python创建列向量_关于Numpy中的行向量和列向量详解

    关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...

  10. python中文读音-python中文谐音 Python 的中文谐音是什么?

    Python 的中文谐音是什么?请尽量准确,.如:Windows:温豆斯 UNIX派森有时候,不得不假装很快乐,只是为了不让别人问你怎么了" python,英[ˈpaɪθən],美[ˈpaɪ ...

最新文章

  1. springboot使用logback日志,部署到tomcat不生效问题解决
  2. 这个比肩ImageNet的数据集遭MIT紧急下架,原因令人愤怒
  3. python检测网格
  4. Weblogic配置故障转移
  5. python规范化字符串_python中正确的字符串编码规范
  6. MySQL / 多版本并发控制
  7. linux怎么锁定test用户,用户被锁定不影响JOB的运行
  8. Sklearn (一) 监督学习
  9. stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder
  10. 数据挖掘你真的了解吗?
  11. 18.go 日志监控系统
  12. java中文手册下载,22年最新
  13. 图像特征提取之LBP算法
  14. 个人MD风格博客系统(未完成)
  15. 虚拟机安装和激活ros5.25软路由
  16. learn git branching
  17. jqurey怎么写入html,html如何写入和创建功能到jquery
  18. linux 动态扫描 数码管,七段数码管动态扫描原理及其实现方法
  19. 计算机D盘无法读取,电脑d盘打不开怎么办_解决电脑d盘无法打开的方法
  20. Autodesk AutoCAD 2022中文下载及教程

热门文章

  1. JS callee 的例子
  2. 网页实时聊天之PHP如何实现websocket
  3. nav 鼠标移入当前高亮显示,其他消失
  4. 架设httpd服务器
  5. HTML基础(四):注释、URL参数、访问路径、图片地图
  6. __name__ == '__main__'的作用
  7. 基础的重要性(程序猿之路)
  8. BZOJ 1176([Balkan2007]Mokia-CDQ分治-分治询问)
  9. python基础代码事例-Python基础总结成千行代码,让Python入门更简单!
  10. python基础教程攻略-python基础教程(一)