Python 的 Numpy 数值计算

本文详细介绍了Python科学计算库Numpy的核心概念,包括ndarray数组、矩阵、ufunc函数及其广播机制,以及如何利用Numpy进行统计分析,如排序、去重和常见统计函数的使用。
摘要由CSDN通过智能技术生成

1. Numpy 介绍

  Numpy(Numerical Python),是 Python 科学计算的基础包。Mumpy 主要提供了以下内容:

  • 快速高效的多维数组对象 ndarray。
  • 对数组执行元素级计算以及直接对数组执行科学计算的函数。
  • 线性代数、傅里叶变换及随机数生成的功能。
  • 将 C、C++、Fortran 代码集成到 Python 的工具。
  • 读写硬盘上基于数组数据集的工具。

  Numpy 是用于科学计算的基础模块,不但能够完成科学计算的任务,而且能够被用作高效的多维数据容器,可以用于存储和处理大型矩阵。Numpy 的数据容器可以保存任意类型的数据,所以可以整合各种数据。

Numpy 官网介绍
Numpy 1.17 官方手册

2. Numpy 数组

  Python 提供了一个 array 模块。array 和 list 不同,它直接保存数值,和 C 语言的一位数组比较类似。但是由于 Python 的 array 模块不支持多维,也没有各种运算函数,所以也不适合做数值运算。Numpy 提供了一种存储单一数据类型的多维数组——ndarray。
  Numpy 提供了两种基本对象:ndarray(N-dimensional Array Object)和 ufunc(Universal Function Object)。ndarray 是存储单一数据类型的多维数组,而 ufunc 是能够对数组进行处理的函数。

2.1 数组属性

常用属性 说明
shape 返回 tuple,返回数组维度的元组。如:(m,n) ,表示 m 行 n 列
ndim 返回 int,表示数组的维度
size 返回 int,表示数组中元素的个数
dtype 返回 data-type,表示数组元素的数据类型
itemsize 返回 int,表示一个数组元素的大小(以字节为单位)
nbytes 返回 int,表示数组元素消耗的总字节数

2.2 创建数组

numpy.array(object,dtype=None,cope=True,order='K',subok=False,ndimn=0)

官方文档

# 导入Numpy库
import numpy as np

# 创建一维数组
arr1 = np.array([1,2,3,4])
print('创建的一维数组为:',arr1)

# 创建二维数组
arr2 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print('创建的二维数组为:\n',arr2)

# 查看数组属性
print('数组的维数为:',arr2.ndim)
print('数组的维度为:',arr2.shape)
print('数组的元素个数为',arr2.size)
print('数组的元素类型为',arr2.dtype)
print('数组每个元素的大小为',arr2.itemsize)
print('数组元素消耗的总字节数为',arr2.nbytes)

# 重新设置数组的shape属性
arr2.shape = 4,3
print('重新设置 shape 后的 arr2 为:\n',arr2)

在这里插入图片描述
  上面的例子都是创建一个 Python 序列,然后通过 array 函数转换为数组,这样做效率不高,因此 Numpy 提供了许多专门用来创建数组的函数。

# 使用arange函数创建数组(开始值,终值,步长(不包括终值))
print('使用arange函数创建的数组为:\n',np.arange(0,1,0.1))

# 使用linspace函数创建数组(开始值,终值,元素个数(包括终值))
print('使用linspace函数创建的数组为:\n',np.linspace(0,1,10))

# 使用logspace函数创建等比数列(开始值(1——10^1),终值,元素个数(包括终值)))
print('使用logspace函数创建等比数列为:\n',np.logspace(1,2,10))
	
# 特殊数组
print('使用zeros函数创建的全0数组为:\n',np.zeros((2,3)))
print('使用ones函数创建的全1数组为:\n',np.ones((2,3)))
print('使用eye函数创建的数组为:\n',np.eye(3))
print('使用diag函数创建的数组为:\n',np.diag([1,2,3,4]))

在这里插入图片描述
数组数据类型转换

# 数组数据类型转换
print('转换结果为:',np.float(42))
print('转换结果为:',np.int8(42.0))
print('转换结果为:',np.bool(42))
print('转换结果为:',np.bool(0))
print('转换结果为:',np.float(True))
print('转换结果为:',np.float(False))

在这里插入图片描述

2.3 生成随机数

# 生成随机数([0,1))
print('生成随机数组为:\n',np.random.random(10))
print('生成服从均匀分布的随机数组为:\n',np.random.rand(3,4))
print('生成服从正态分布的随机数组为:\n',np.random.randn(3,4))

# 生成随机数(给定范围(不包括上限))
print('生成给定上下限的随机数组为:\n',np.random.randint(2,10,size=[2,5]))

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值