Numpy数组计算基础

目录

一、前言

二、掌握Numpy数组对象ndarray 

2.1.创建数组对象

2.2.生成随机数

NumPy的基本数据类型及其取值范围

三、总结


一、前言

      NumPy(Numerical Python的简称)是Python中一个非常重要的库,它主要用于进行大量的数值和矩阵计算。NumPy提供了一个高性能的多维数组对象,以及一系列用于操作这些数组的函数。这些数组是固定的类型,大小可以动态变化,支持复杂的数组索引和切片操作,并且提供了大量的数学函数库,以便在数组上进行操作。Numpy是用于数据科学计算的基础模块,不但能够完成科学计算的任务,而且能够用作高效的多维数据容器,可用于存储和处理大型矩阵。Numpy本身并没有提供很多高级的数据分析功能。理解Numpy数组及数组计算有助于更加高效地使用诸如pandas等数据处理工具。

二、掌握Numpy数组对象ndarray 

       python提供了一个array模块。array和list不同,array直接保存数值,和C语言的一维数组比较类似。但是由于python的array模板不支持多维,也没有各种运算函数,因此不适合做数值运算。Numpy弥补了python不支持多维等不足之处,它提供了一种存储单一数据类型的多维数组----ndarray。

2.1.创建数组对象

       Numpy提供了两种基本对象:ndarray和ufunc。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。在Numpy中,维度称为轴。Numpy提供的array函数可以创建一维或多维数组。

arange函数的常用参数及其说明

参数名称参数说明
start接收 int 或实数。表示数组的开始值,生成的数组包括该值。默认为 0
stop接收 int 或实数。表示数组的终值,生成的数组不包括该值。无默认值
step接收 int 或实数。表示在数组中,值之间的步长。默认为 1
dtype接收数据类型。表示输出数组的类型。默认为 None

个表格主要解释了 arange 函数的一些常见参数和它们的作用。请注意,这些信息可能适用于某种编程语言或特定的软件工具。如果大家需要进一步的帮助,请提供上下文或指定具体的编程环境。

首先我们先安装

pip install numpy

接下来就可以进行下一步了

创建一维数组与多维数组并查看属性的过程:

创建数组:

NumPy 提供了两种基本对象:ndarrayufuncndarray 是存储单一数据类型的多维数组,而 ufunc 则是对数组进行处理的函数。在 NumPy 中,维度被称为轴。通过 np.array() 函数,我们可以创建一维或多维数组。

#导入Numpy库
import numpy as np
#创建一维数组
arr1 = np.array([1,2,3,4])
print('创建的数组为:\n',arr1)

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

查看属性:

#查看数组形状
print('数组形状为:',arr2.shape)

#查看数组元素类型
print('数组元素类型为:',arr2.dtype)

#查看数组元素个数
print('数组元素个数为:'arr2.size)

#查看数组每个元素存储空间
print('数组每个元素存储空间为:',arr2.itemsize)

重新设置数组的shape:

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

      除了使用 array函数创建数组之外,还可以使用arange函数创建数组。arange函数类似于python自带的函数range,通过指定开始值、终值和步长来创建一维数组,创建的数组不含终值。

使用arange函数创建数组: 

#使用arange函数创建数组
print('使用arange函数创建数组为:\n',np.arange(0,1.0.1))

       logspace函数和linspace函数类似,但他创建的数组是等比数列,在logspace函数的参数中,除了base参数和linspace函数的retstep参数不同之外,其余均相同。base参数可用于设置日志空间的底数,在不设置的情况下,默认以10为底。

使用logspace函数创建的等比数:

#使用logspace函数创建的等比数
print('使用logspace函数创建的等比数列为:\n',np.logspace(0,2,20))

      Numpy还提供了其他函数,用于创建特殊数组,如zeros,eye,diag和ones函数等。其中zeros 函数用于创建元素全部0的数组,即将创建的数组的元素全部填充为0。eye函数用于生成主对角线上的元素为1、其他元素0的二维数组,类似单位矩阵。diag 函数创建类似对角矩阵的数组,即除对角线上的元素以外的其他元素都为0,对角线上的元素可以是0或其他值。ones函数用于创建元素全部为1的数组,即将创建的数组的元素全部填充为1.

代码演示如下:        

#使用zeros函数创建数组
print('使用zeros函数创建数组为:\n',np.zeros((2,3)))

#使用eye函数创建数组
print('使用eye函数创建数组为:\n',np.eye(3))

#使用diag函数创建数组
print('使用diag函数创建数组为:\n',np.diag([1,2,3,4]))

#使用ones函数创建数组
print('使用ones函数创建数组为:\n',np.ones((5,3)))

数组的数据类型转换:

NumPy 极大程度地扩展了 Python 的数据类型。在 NumPy 中,数组的数据类型是同质的,即数组中所有元素的数据类型必须是一致的。这使得更容易确定数组所需的存储空间。数组的数据类型转换示例如下:

 #整数转换为浮点数
print('转换结果为:',np.float64(42))
#浮点数转换为整数
print('转换结果为:',np.int8(42.0))
#整数转换为布尔值
print('转换结果为:',np.bool_(42))
#整数转换为布尔值
print('转换结果为:',np.bool_(0))
#布尔值转换为浮点数
print('转换结果为:',np.float64(True))
#布尔值转换为浮点数
print('转换结果为:',np.float64(False))

      为了更好地帮助读者理解数据类型,下面将创建一个用于存储餐饮企业库存信息的数据类型。其中,用一个能存储40个字符的字符串来记录商品的名称,用一个64位的整数来记录商品的库存数量,最后用一个64位的单精度浮点数来记录商品的价格,具体步骤如下。
(1)创建数据类型: 

df = np.dtype([('name', np.str_, 40),('numitems', np.int64),('price', np.float64)])
print('数据类型为:\n',df)

(2)查看数据类型,可以直接查看或使用 Numpy中的dtype属性进行查看如代:

print('数据类型为:', df['name'])
print('数据类型为:', np.dtype(df['name']))

(3)在使用array函数创建数组时,数组的数据类型默认是浮点型。若需要自定义数组数据,则可以预先指定数据类型:

itemz = np.array([('tomatoes', 42, 4.14),('cabbages', 13, 1.72)],dtype=df)
print('自定义数据为:',itemz)

2.2.生成随机数

andom模块中其他常用随机数生成函数

函数说明
seed确定随机数生成器的种子
permutation返回一个序列的随机排列或返回一个随机排列的范围
shuffle对一个序列进行随机排序
binomial产生服从二项分布的随机数
normal产生服从正态(高斯)分布的随机数
beta产生服从 beta 分布的随机数
chisquare产生服从卡方分布的随机数
gamma产生服从 gamma 分布的随机数
uniform产生在 [0.0, 1.0) 中均匀分布的随机数
exponential产生服从指数分布的随机数
gumbel产生服从 Gumbel 分布的随机数
geometric产生服从几何分布的随机数
poisson产生服从泊松分布的随机数
rand_产生服从指定分布的随机数
randint产生指定范围内的整数随机数

这个表格列出了一些Python中的random模块提供的用于生成各种分布的随机数的函数。每个函数都有相应的描述,例如seed用于确定随机数生成器的种子,permutation用于返回一个序列的随机排列或返回一个随机排列的范围,shuffle则用于对一个序列进行随机排序,等等。

使用random函数生成随机数:

print('生成的随机数为:\n',np.random.random(100))

使用rand函数生成服从均匀分布的随机数:

print('生成的随机数为:\n',np.random.rand(10,5)

 使用randn函数生成服从正态分布的随机数:

print('生成的随机数为:\n',np.random.randn(10,5))

使用randint函数生成给定范围的随机数: 

print('生成的随机数为:\n',np.random.randint(2,10,size=[2,5]))

NumPy提供了强大的生成随机数的功能。然而,真正的随机数很难获得,在实际中使围的都是伪随机数。在大部分储况下,伪随机教就能满足使用需求。当然,某些特珠情祝除外,如进行高精度的模批实验。对于 NumPy,与随机数相关的函数都在 random模块中,其中包括可以生成服从多种概率分布的随机数的函数。

NumPy的基本数据类型及其取值范围

类型描述
bool用1位存储的布尔值(值为True或False)
inti表示由所在平台决定其精度的整数(一般为int32或int64)
int8表示整数,范围为-128~127
int16表示整数,范围为-32768~32767
int32表示整数,范围为-2^31~2^31-1
int64表示整数,范围为-2^63~2^63-1
uint8表示无符号整数,范围为0~255
uint16表示无符号整数,范围为0~65535
uint32表示无符号整数,范围为0~2^32-1
uint64表示无符号整数,范围为0~2^64-1
float16表示半精度浮点数(16位),其中用1位表示正负,用5位表示整数,用10位表示尾数
float32表示单精度浮点数(32位),其中用1位表示正负,用8位表示整数,用23位表示尾数
float64 或 float表示双精度浮点数(64位),其中用1位表示正负,用11位表示整数,用52位表示尾数
complex64表示复数,分别用两个32位浮点数表示实部和虚部
complex128 或 complex表示复数,分别用两个64位浮点数表示实部和虚部
datetime64[ns]nanosecond分辨率的时间戳,表示从某个时间基准(通常是Unix epoch)到给定时刻的时间差
timedelta64[ns]

nanosecond分辨率的时间间隔,表示两个日期或时刻之间的差值

这个表格列出了NumPy支持的各种基本数据类型以及它们的描述,包括布尔型、整数型、无符号整数型、浮点数型、复数型等,并给出了每种类型的取值范围。

三、总结

NumPy凭借其ndarray对象和全面的数组操作功能,为Python环境下的科学计算和数据分析提供了坚实的基础。掌握ndarray的创建和管理,以及如何利用NumPy生成随机数,是迈向数据科学和机器学习领域专业技能的第一步。无论是进行基础的数学运算,还是复杂的统计分析,NumPy都是不可或缺的利器,助力科研人员和工程师在数据的海洋中探索未知,解决问题。

NumPy的未来充满机遇与挑战。它将继续作为数据科学领域的基石,引领着行业向前发展,同时不断自我进化,以适应科技和社会的快速变迁。无论是对专业数据科学家,还是对广大数据爱好者而言,掌握和运用NumPy都将是一项终身受益的技能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值