python基础库-Numpy
1:Ndarray对象
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
2:矩阵的属性:
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
print(a.shape) #矩阵形状--(3,5)float
print(a.ndim) #ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。--2
print(a.dtype) #返回的数据类型 --int32
print(a.size) #返回的数据数量 --15
3:创建矩阵
import numpy as np
matrix1=np.zeros ((3,4)) #全0矩阵
matrix2=np.arange( 10, 30, 5 ) #array([10, 15, 20, 25])
matrix3=np.random.random((2,3)) #返回随机矩阵
print(matrix1)
print(matrix2)
print(matrix3)
结果
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[10 15 20 25]
[[0.66077157 0.60367463 0.95413385]
[0.38271342 0.23516732 0.69091367]]
数据均分:
import numpy as np
from numpy import pi
matrix=np.linspace( 0, 2*pi, 100 ) #返回0到6.28均分的100各数据
print(matrix)
#重组矩阵
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
结果:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
import numpy as np
x = np.empty([3,2], dtype = int)
y = np.ones([2,2], dtype = int)
a = np.eye(5)
print(x)
print(y)
print(a)
结果:
[[0 0]
[0 0]
[0 0]]
[[1 1]
[1 1]]
4:矩阵的操作:
#向量和矩阵都支持切片操作:
matrix = np.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
print(matrix[1:3,0:2])
结果:
[[20 25]
[35 40]]
#axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
matrix.sum(axis=0)
结果
[60 75 90]
b = a.T 矩阵转置
print (np.delete(a,1,axis = 1)) #删除第二列
#矩阵的多种乘法
import numpy as np
A = np.array( [[1,1],
[0,1]] )
B = np.array( [[2,0],
[3,4]] )
print(3*A) #所有的数字都乘以3
print(B*A) #对应数字相乘
print (A.dot(B)) #print(np.dot(A,B)) 也可以这样,矩阵乘法
print(np.sqrt(B)) #矩阵元素开根号
print (np.vdot(A,B)) #点积,对应数字相乘相加
结果
[[3 3]
[0 3]]
[[2 0]
[0 4]]
[[5 4]
[3 4]]
[[1.41421356 0. ]
[1.73205081 2. ]]
6
视图或浅拷贝
ndarray.view() 方会创建一个新的数组对象,该方法创建的新数组的维数更改不会更改原始数据的维数。
副本或深拷贝
ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。
更多基础知识参考:
https://www.runoob.com/numpy/numpy-linear-algebra.html
学习链接:
https://www.cnblogs.com/qflyue/p/8244331.html
原文地址:https://www.cnblogs.com/yifanrensheng/p/11393687.html
- 一条关于swap争用的报警邮件分析(一)(r7笔记第28天)
- Spring-IOC(2)
- Python3 pandas read_csv 读取txt文件报错:IOError: Initializing from file failed
- dataguard添加临时数据文件的bug(r7笔记第27天)
- 简单易学的机器学习算法——线性支持向量机
- Java设计模式-模板方式模式
- 由一条create语句的问题对比mysql和oracle中的date差别 (r7笔记第26天)
- Java设计模式-命令模式
- 关于执行计划中的%CPU的含义 (r7笔记第25天)
- Java设计模式-享元模式
- 简单易学的机器学习算法——线性可分支持向量机
- 基于gensim的Doc2Vec简析,以及用python 实现简要代码
- 关于db link权限分配的苦旅(一) (r7笔记第42天)
- Java设计模式-责任链模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 编写一个IDEA插件之:事件监听
- 重新加载故障节点上的 Ceph 卷
- 一个Spring Bean从诞生到逝去的九次人生转折!
- 原创 | 详解git rebase,让你走上git大神之路
- 启用chrome浏览器内置的二维码生成插件
- ZeroLogon漏洞(CVE-2020-1472)防御性指南
- 原创 | 随机数大家都会用,但是你知道生成随机数的算法吗?
- 原创 | codeforces 1425E,一万种情况的简单题
- 原创 | codeforces 1417C,逆向思考的数据结构题
- 原创 | 操作失误不要慌,这个命令给你的Git一次反悔的机会
- 原创 | 想做推荐算法?先把FM模型搞懂再说
- 活见鬼,明明删除了数据,空间却没减少!
- 原创 | Git仓库的提交记录乱成一团,怎么办?
- 原创 | 平面内有N个点,如何快速求出距离最近的点对?
- 原创 | codeforces 1426F,初学者也能做,div3的最难题