NumPy简介

NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。

NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。

基础知识

NumPy的数组类被调用ndarray。它也被别名所知 array。请注意,numpy.array这与标准Python库类不同array.array,后者只处理一维数组并提供较少的功能。ndarray对象更重要的属性是:

ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。

ndarray.shape - 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim。

ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积。

ndarray.dtype - 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。

ndarray.itemsize - 数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。

ndarray.data - 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。

#一个例子

import numpy as np

a = [[0,1, 2], [3 ,4 ,5], [6, 7 ,8]]

a=np.asarray(a)

print(a.ndim,a.shape,a.size,a.dtype,a.itemsize,a.data )

#output 2 (3, 3) 9 int32 4

ndarray数组的创建

np.arange(n) ; 元素从0到n-1的ndarray类型

np.ones(shape): 生成全1

np.zeros((shape), ddtype = np.int32) : 生成int32型的全0

np.full(shape, val): 生成全为val

np.eye(n) : 生成单位矩阵

np.ones_like(a) : 按数组a的形状生成全1的数组

np.zeros_like(a): 同理

np.full_like (a, val) : 同理

np.linspace(1,10,4): 根据起止数据等间距地生成数组

np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素

np.concatenate():

ndarray数组的维度变换

.reshape(shape) : 不改变当前数组,依shape生成

a=np.array(range(9)).reshape(3,3)#生成3*3数组

.resize(shape) : 改变当前数组,依shape生成

.swapaxes(ax1, ax2) : 将两个维度调换

.flatten() : 对数组进行降维,返回折叠后的一位数组

数组的类型变换

数据类型的转换 :a.astype(new_type) : eg, a.astype (np.float)

数组向列表的转换: a.tolist()

数组的索引和切片

一维数组切片

a = np.array ([9, 8, 7, 6, 5, ])

a[1:4:2] –> array([8, 6]) : a[起始编号:终止编号(不含): 步长]

多维数组索引

a = np.arange(24).reshape((2, 3, 4))

a[1, 2, 3] 表示 3个维度上的编号, 各个维度的编号用逗号分隔

多维数组切片

a [:,:,::2 ] 缺省时,表示从第0个元素开始,到最后一个元素

数组的运算

np.abs(a) np.fabs(a) : 取各元素的绝对值

np.sqrt(a) : 计算各元素的平方根

np.square(a): 计算各元素的平方

np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数

np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)

np.rint(a) : 各元素 四舍五入

np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回

np.exp(a) : 计算各元素的指数值

np.sign(a) : 计算各元素的符号值 1(+),0,-1(-)

.

np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值

np.minimum(a, b) np.fmin() : 取最小值

np.mod(a, b) : 元素级的模运算

np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素

numpy随机数函数

简介numpy 的random子库

rand(d0, d1, …,dn) : 各元素是[0, 1)的浮点数,服从

均匀分布

randn(d0, d1, …,dn):标准

正态分布

data=np.random.rand(10)

data1=np.random.randn(10)

“”[0.03204083 0.27937194 0.

69090113 0.26315503 0.48795894 0.28773118

0.44494569 0.52262717 0.04793805 0.91971475]

[ 0.78044614 -1.63095456 -0.88627282 0.40722248 0.25078519 -0.72235564

0.81553023 0.79439466 0.0347481 1.04211688]

“”

randint(low, high,( shape)): 依shape创建随机整数或整数数组,范围是[ low, high)

data=np.random.randint(1,36,6)

"""[27 33 19 6 13 30]

"""

seed(s) : 随机数种子

shuffle(list) : 根据数组a的第一轴进行随机排列,改变数组list元素的顺序

import random

list = [20, 16, 10, 5]

data=random.shuffle(list)

#[5, 20, 10, 16]

choice(a) : 返回随机项

import random

list = [20, 16, 10, 5]

data=random.choice(list)

#16

uniform() 方法将随机生成下一个实数,它在 [x, y] 范围内

import random

list = [20, 16, 10, 5]

data=random.uniform(1,10)

#3.644723336854002

seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。

randrange() 方法返回指定递增基数集合中的一个随机数,基数默认值为1。

import random

data=random.randrange (10, 100 ,5)

print(data)

#65

numpy的统计函数

sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和,axis为整数或者元组

mean(a, axis = None) : 同理,计算平均值

average(a, axis =None, weights=None) : 依给定轴axis计算数组a相关元素的加权平均值

std(a, axis = None) :同理,计算标准差

var(a, axis = None): 计算方差

eg: np.mean(a, axis =1) : 对数组a的第二维度的数据进行求平均

a = np.arange(15).reshape(3, 5)

np.average(a, axis =0, weights =[10, 5, 1]) : 对a第一各维度加权求平均,weights中为权重,注意要和a的第一维匹配

min(a) max(a) : 计算数组a的最小值和最大值

argmin(a) argmax(a) : 计算数组a的最小、最大值的下标(注:是一维的下标)

unravel_index(index, shape) : 根据shape将一维下标index转成多维下标

ptp(a) : 计算数组a最大值和最小值的差

median(a) : 计算数组a中元素的中位数(中值)

eg:a = [[15, 14, 13],

[12, 11, 10] ]

np.argmax(a) –> 0

np.unravel_index( np.argmax(a), a.shape) –> (0,0)

python numpy库作用_整理numpy库的常用功能(持续更新…),NumPy,函数,梳理相关推荐

  1. TS 常见问题整理(60多个,持续更新ing)

    TS 常见问题整理(60多个,持续更新ing) https://cloud.tencent.com/developer/article/1593335

  2. 问道区块链_区块链学习_v1.0.0_持续更新。。。

    本系列内容参考图 创建 共识网络 调用 部署 挖矿 消耗 编写 超级链组件 节点 多节点 账号 智能合约 合约账号 燃料耗品代币 开发者 区块 尊重原创,转载请注明出处https://blog.csd ...

  3. 一贴集齐大数据、Python、全栈等所有资源,免费分享,持续更新!!!

    [上海校区] 一贴集齐大数据.Python.全栈等所有资源,免费分享,持续更新!!!

  4. python三维矩阵可视化_科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)...

    Mlab了解 Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化. 过程为: .建立数据源 .使用Filter( ...

  5. 万维考试系统python题库答案_万维试题库系统官方下载

    万维试题库管理系统是一款相当出色的考试软件,软件拥有很多功能如课程定义,题型支持.试题批量识别导入,雷同试题检测,随机组卷和手工组卷流程控制,透明压缩,双向缓冲处理,数据导入导出共享,相当实用. 基本 ...

  6. python答疑的作用_不学Python之集中答疑(5)

    Python不用学,用用你就会. 本辑答疑针对Python自然学习法二阶第二单元课程: Q:什么是字典? A:字典也是Python里面的一种多元素数据的存放方式.对于多个元素需要存放在一个变量名下的数 ...

  7. python对财务的作用_学习Python对财务工作者有哪些用途?

    可以用来处理数据,进行更深层次的数据分析 会计财务都离不开和数据打交道,而且每天有大量重复性工作,所以学习Python最大的用处是:释放大部分人力对数据的处理,解放重复劳动性工作. 另外也在评估预算的 ...

  8. python中点的作用_一分钟了解Python中“*”的作用

    一分钟了解Python中"*"的作用 在为函数传递参数和函数定义时使用参数的时候,时常会看到有和 *和**,下面分别讲解其作用. 调用函数时使用*和 ** 假设有函数 def te ...

  9. mysql入库出库触发器_入库出库后库存自动更新的SQL触发器语句是什么?

    tb1(产品表)cpidcpnamecpcolorkucun1xxxxxx82xxxxxx7=================================tb2(入库表)riqirukucpid2 ...

最新文章

  1. 外网远程桌面连接设置
  2. linux 文件的打包和解压
  3. leetcode算法题--树的子结构
  4. Leetcode 167. 两数之和 II - 输入有序数组 解题思路及C++实现
  5. 解决GeoTools中CQL解析中文字段名的问题
  6. WPF入门(一)——绑定Binding
  7. cesium学习之环境搭建
  8. 网络编程(part4)--刷新缓冲区
  9. 广州运营开放式数据交易平台发力大数据业务
  10. 人工智能(9)---人工智能的发展趋势是什么?人工智能的行业应用
  11. [转载] Python: fnmatch模块 (Unix B-Shell通配符的文件名匹配)
  12. python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...
  13. HDU6380 degree
  14. android移动应用开发实践教程,分享一些行业经验,成功入职阿里
  15. 笔记本计算机没反应怎么办,有办法 | 耳机插进电脑没反应怎么办?
  16. WSAData小说明(转)
  17. win8删除计算机管理员权限,win8.1系统如何删除administrator账户
  18. 大数据分析未来财富管理谁会脱颖而出?
  19. pandas 选取行和列的方法
  20. android_Socket网络编程实现手机图片上传到电脑

热门文章

  1. Mac设置安装任何来源文件的方法
  2. 白银票据的原理和使用
  3. A股市场上股票行情数据接口有那几种?
  4. L1-055 谁是赢家 (10分)(C语言)
  5. 【030】基于51单片机的超声波液位测距报警系统(带温度显示)Proteus仿真设计
  6. 什么是SpringCloud?可以用于干什么?
  7. T31开发笔记:librtmp编译测试
  8. IOS企业管控软件案例
  9. java 字符流图片_java 字节流、字符流(复制图片、复制文本)
  10. 自己对接美团cps,饿了么cps,京东cps的过程,免费领取饿了么红包,分享给大家,程序员自己动手也能赚点!!!