Python库之Numpy(一)

介绍

NumPy模块是Python的一种开源的数值计算扩展,是一个用python实现的科学计算包,主要包括:

  • nddary:具有矢量算术运算和复杂广播能力的多维数组
  • ufunc: 对整组数据快速运算的标准数学函数
  • 随机生成函数,傅里叶变换,线性代数操作

nddary—Numpy的核心数据结构

  • 与标准Python库类是有差别的,array.array只处理一维数组,提供的功能也很少。numpy.array可处以高维数组,功能也较多
  • ndarray的大小固定,创建好数组后数组大小是不会再发生改变的

naddary的创建

通过numpy模块中的常用的几个函数进行创建ndarray多维数组对象

  • arange函数:接收一个普通的python序列,并将其转换为ndarray
import numpy as np
#创建nddary

#用一维数组创建
a=np.array([1,2,3,4,5])
print(a)
#用元组创建
b=np.array((1,2,3,4,5,6))
print(b)
#多维数组
c=np.array([[1,2,3,4],[5,6,7,8]])
print(c.ndim)#查看维数
d=np.array([[[1,2,3],[2,3,4]],[[3,4,5],[4,5,6]]])
print(d)
		[[[1 2 3]
		  [2 3 4]]
		
		 [[3 4 5]
		  [4 5 6]]]
print(d.ndim) #查看维数 3 有3个大括号
print(d.shape) #每一维的大小 (2,2,3) 第一维中2个元素,第二维中2个元素 第三维中3个元素
print(d.dtype) #元素类型 int32
print(d.size) #元素个数 12
print(d.itemsize) #每个元素所占的字节数 4
  • zeros函数:创建指定长度或者形状的全零数组。
e =np.zeros((2,3)) #参数不能为空
print(e)
[[0. 0. 0.]
 [0. 0. 0.]]
  • ones函数:创建指定长度或者形状的全1数组。
f=np.ones((2,4))
print(f)
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]
  • empty函数:创建一个没有任何具体值的数组(准备地说是创建一些未初始化的ndarray多维数组)
g=np.empty((3,1))
print(g)
[[2.45304190e-315]
 [2.45318478e-315]
 [2.45318494e-315]]

nddary其他的创建方式

  • arange函数: 类似python的range函数,通过指定开始值、终值和步长来创建一个一维数组,注意:最终创建的数组不包含终值
h=np.arange(8)
print(h)  [0 1 2 3 4 5 6 7]
h=np.arange(0,18,2) #步长
print(h)  [ 0  2  4  6  8 10 12 14 16]
h=np.arange(18,0,-1)
print(h)  [18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1]
  • linspace函数:通过指定开始值、终值和元素个数来创建一个一维数组,数组的数据元素符合等差数列,可以通过endpoint关键字指定是否包含终值,默认包含终值
i=np.linspace(18,0,6)  #生成6个元素 等差形式
print(i)  [18.  14.4 10.8  7.2  3.6  0. ]
print(help(np.linspace))
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
    Return evenly spaced numbers over a specified interval.
  • logspace函数:和linspace函数类似,不过创建的是等比数列数组
#0表示10~0  3表示10~3  一共生成4个元素
j=np.logspace(0,3,4)
print(j)
[   1.   10.  100. 1000.]
  • 使用随机数填充数组,即使用numpy.random中的random()函数来创建0-1之间的随机元素,数组包含的元素数量由参数决定
  1. uniform 函数原型: numpy.random.uniform(low,high,size)从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high

  2. randint: 原型:numpy.random.randint(low, high=None, size=None, dtype=‘l’),产生随机整数;

  3. random_integers: 原型: numpy.random.random_integers(low, high=None, size=None),在闭区间上产生随机整数;

  4. random_sample: 原型: numpy.random.random_sample(size=None),在[0.0,1.0)上随机采样;

  5. random: 原型: numpy.random.random(size=None),和random_sample一样,是random_sample的别名;

  6. rand: 原型: numpy.random.rand(d0, d1, …, dn),产生d0 - d1 - … - dn形状的在[0,1)上均匀分布的float型数。

  7. randn: 原型:numpy.random.randn(d0,d1,…,dn),产生d0 - d1 - … - dn形状的标准正态分布的float型数。

#参数为形状的小 元素在0~1之间
h=np.random.random((2,2,3))
print(h)
[[[0.87588073 0.94536619 0.90240046]
  [0.35536868 0.40900711 0.58219535]]

 [[0.66279523 0.79591973 0.37625457]
  [0.3967271  0.28329279 0.49097635]]]

j=np.random.randint(1,20,size=(2,2,3))
print(j)
[[[17 15 12]
  [14 19 11]]

 [[19 10 12]
  [11 11  2]]]

如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新数组。

k=np.array([1,2,3,4,5]) 
print(k.dtype)
k1=k.astype(float)  #或创建 k1=np.array([1,2,3,4,5],dtype=float)
print(k.dtype)
print(k1.dtype)
print(k1)
int32
int32
float64
[1. 2. 3. 4. 5.]
k2=np.array([1,2,3,4,5],dtype=float)
print(k2.dtype)
float64

ndarray修改形状

  • 直接修改数组ndarray的shape值, 要求修改后乘积不变
m=np.random.randint(1,20,size=(2,5))
print(m)
m.shape=(5,2)
print(m)
[[ 8 11 11  3  4]
 [ 6  8  5  6  1]]
[[ 8 11]
 [11  3]
 [ 4  6]
 [ 8  5]
 [ 6  1]]
  • 直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致
m=np.random.randint(1,20,size=(2,5))
print(m)
m1=m.reshape(10)
print(m1)
#修改m1后 原来的m 也会发生变化
m1[3]=60
print(m1)
print(m)
m>	[[16 15]
	 [16  3]
	 [10 17]
	 [ 3 12]
	 [19  8]]
m1> [16 15 16 60 10 17  3 12 19  8]
m发生变化[[16 15]
		 [16 60]
		 [10 17]
		 [ 3 12]
		 [19  8]]

  • 当指定某一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
m3=np.random.randint(1,20,size=(2,5))
print(m3)
m3.shape=(5,-1)
print(m3)
[[ 3  8  1 11 14]
 [ 9  3  4 18 19]]
[[ 3  8]
 [ 1 11]
 [14  9]
 [ 3  4]
 [18 19]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值