Python-Numpy的使用

Numpy数组的属性

ndarray.ndim:数组轴的个数

ndarray.shape:数组的维度,该值是个元组

例:对于m行n列的矩阵,shape的值是(m,n)。shape元组的长度就是维度的数目,及ndim(秩)

ndarray.size:数组元素的总数,其值等于shape中元素的乘积

ndarray.dtype:描述数组中元素类型的对象

import numpy as np
a=np.array([1,2,3])
b=np.array([[1,2,3],[4,5,6]])
c=np.array([[[1,1],[2,1],[3,1]],[[4,1],[5,1],[6,1]]])

print('a,秩:',a.ndim,'数组维度',a.shape,'元素个数:',a.size)
print('b,秩',b.ndim,'数组维度:',b.shape,'元素个数:',b.size)
print('c,秩:',a.ndim,'数组维度:',c.shape,'元素个数:',c.size)

Numpy内置函数

(1)zeros()函数,生成全由"0"构成的数组

格式:zeros(shape[,dtype,order])

功能:创建一个指定大小的数组,数组元素以0来补充,默认浮点型

参数:shape,指定形状     dtype,数据类型(默认为float类型)

order,指定数组元素在内存中存储顺序,'C'表示行优先,'F'表示列优先,默认值为'C'

(2)np.ones()函数,生成全由"1"构成的数组

格式:ones(shape[,dtype,order])

功能:创建一个指定大小的数组,数组元素以1来补充

import numpy as np

x=np.zeros(5)
y=np.ones(5)

print('x',x)
print('y:',y)
x1=np.zeros((5,),dtype=int)
print('x1:',x1)
y1=np.ones((2,2),dtype=[('x','int'),('y','float')],order='C')#行中的数值为int,列中的数值为float
print('y1',y1)

由现有数组生成的数组

array函数。Python中的列表不存在维度的问题,但是数组是有维度的,使用函数np.array()的作用就是把列表转化为数组

格式:array(object,dtype,copy,order,subok,ndmin)

功能:将object对象转化为Numpy数组

参数:

object:数组或嵌套的数列

copy:对象是否需要复制,可选

dtype:数组元素的数据类型,可选

order:创建数组的样式,'C'为行方向,'F'为列方向,A为任意方向(默认)

subok:默认返回一个与基本数据类型一致的数组

ndmin:指定生成数组的最小维度

import numpy as np
n1=np.array([[1,2,3],[4,5,6]],dtype=float)
print(n1)

生成固定范围的数组

arange()函数

格式:arange(start,stop[,step],dtype)

功能:从start开始到stop结束的范围内以step为步长,生成一个数组对象,结果不含终值

参数:

start:范围的起始值,可选,缺省为0

stop:范围的终止值(不包含)

step:两个值的间隔,又称步长,可选,缺省为1

dtype:表示数据类型,可选,缺省时使用输入数据的类型

import numpy as np
x1=np.arange(10)
x2=np.arange(10,30,5,dtype=float)
print(x1)
print(x2)

linspace函数

linspace()函数用于创建一个一维数组,数组是由一个等差数列构成的

格式:np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

功能:创建一个数值范围start到stop的范围内num个等差数列构成的数组。默认情况(即endpoint=True)下,结果数组包含终值

参数:

start:开始数值

stop:结束数值,如果endpoint值为True,该值包含于数组中,否则不包含;

num:样本数量,可选,缺省为50

endpoint:该值为True时,数组中包含stop值,反之不包含,可选,缺省为True

retstep:可选,如果为True时,生成的数组中显示间距,反之不显示

dtype:表示数据类型

import numpy as np
x=np.linspace(1,100,199,endpoint=True,retstep=True,dtype=float)
print(x)

改变数组的形状

reshape()函数

功能:可以在不改变数据的条件下修改数组的形状

格式1:Numpy.reshape(arr,newshape,order='C')

格式2:arr.reshape(newshape,order='C')

参数:

arr:表示原数组

newshape:表示整数或者整数数组,新的形状应兼容原有形状

order:可选,可选范围为{'C','F','A'},按照order的顺序读取a的元素,并按照索引顺序将元素放到变换后的数组中。C'表示按行,'F'表示按列,'A'为原顺序

import numpy as np
a=np.linspace(2,10,5)
b=np.linspace(2,6,20)
c=np.linspace(10,19,10)
print("a:",a)
print("b:",b)
print("c:",c)
print("b.reshape:\n",b.reshape((4,5),order='C'))
print("c.reshape:\n",c.reshape(2,5))

empty()函数,生成指定形状的数组

格式:empty(shape[,dtype,order])

功能:创建一个形状为shape的未初始化数组,值为随机值

例如:a7=np.empty((3,4)),生成3行4列的随机浮点数(float)构成的二维数组

import numpy as np
a=np.empty((2,3))
b=np.empty(3,dtype=int)
print('a:\n',a)
print('b:\n',b)

数组的拼接

NumPy.c_和NumPy.r_

NumPy.c_和NumPy.r_这两个不是函数,准确的说是CClass类中的一个实例,其功能是将数组拼接,区别在于NumPy.c_的功能是将数组按列拼接,要求拼接的数组行数相同,NumPy.r_的功能是将数组按行拼接,要求拼接的数组列数相同

Numpy的数学函数

三角函数

import numpy as np
a=np.array([0,30,45,60,90,120])
print('sin(a):\n',np.sin(a*np.pi/180))
print('cos(a):\n',np.cos(a*np.pi/180))
print('tan(a):\n',np.tan(a*np.pi/180))

 其他数学类函数

import numpy as np

a=np.array([1.0,2.6,3.8,4.3])
print('向上取整:',np.ceil(a))
print('向下取整:',np.floor(a))
print('四舍五入取整:',np.around(a))
print('开方:',np.sqrt(a))

b=np.linspace(-3,3,5)
print('b:',b)
print('b的绝对值:',np.abs(b))
print('分别取出b的小数部分和整数部分:',np.modf(b))
print('e为底的指数函数:',np.exp(b))

Numpy的随机模块

随机数的生成函数

Numpy.random.rand(d)   函数

格式:rand(d)

功能:根据给定的维度生成[0,1)之间的数据,包含0,不包含1

参数d为生成随机数的维度(一维或多维)

import numpy as np
a=np.random.rand(5)  #生成包含5个一维随机数数组
b=np.random.rand(3,4) #生成3行4列的随机数数组
print('a:',a)
print(b)

NumPy.random.randint()

格式::randint(low,high,size,dtype)

功能:返回随机整数,随机整数的范围区间为[low,high),包含low,不包含high

参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认为整型。

high省略时,默认生成随机数的范围是[0,low)

import numpy as np
a= np.random.randint(1,10)
b=np.random.randint(1,5,size=(2,3))
print(a)
print(b)

Numpy.random.randn()函数

格式:randn(d)

功能:返回标准正态分布(均值为0,标准差为1)的数组

参数d为数组的形态(一维或多维)

Numpy.random.standard_normal函数

格式:standard_normal(size=None)

功能:同randn()函数,也是返回标准正态分布的数组样本,,不同的是它的数组形态由参数size指定,一维数组的size对应一个整数值,对于多维数组,size必须是元组形式,

函数randn()和standard_normal()都只能返回标准正态分布,对于更一般的正态分布,需要用到式子

“x*np.random.randn(d)+u”’进行修正

注:randn()的参数方式与Numpy中的其他函数都不同,不建议使用

import numpy as np
a=np.random.standard_normal(size=(3,4))
print(a)

Numpy.random.normal()函数(更好)

格式:normal(loc=0.0,scale=1.0,size=None)

功能:返回均值为loc,标准差为scale的正态分布的样本,size表示生成数组的维度,如果是一维数组,size是一个值,如果是多维数组,size的值为一个元组。

normal函数默认情况下返回标准正态分布,即loc=0.0,scale=1.0

import numpy as np
import matplotlib.pyplot as plt

u,sigma=0,1
x=np.random.normal(u,sigma,50)
y=(1/np.sqrt(np.sqrt(np.pi*2)*sigma))*np.exp(-(x-u)**2/2*sigma**2)
plt.scatter(x,y)
plt.show()

Numpy的索引和切片

Numpy数组对象的内容可以通过索引或切片来访问和修改

Numpy数组可以通过冒号分隔切片参数(start:stop:step)

import numpy as np

a=np.arange(10)
s=slice(2,7,2)
print(a[s])
print(a[2:7])
import numpy as np

b=np.array([[1,2,3],[3,4,5],[4,5,6]])
print('从第二行开始切片:\n',b[1:])
print('从第三行开始切片:\n',b[2:])
print('切片第三行的所有元素:\n',b[2,...])
print('第二列及其剩余元素:\n',b[...,1:])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘~风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值