Python-Numpy库的使用介绍

前言

Numpy是一个扩展的程序库,支持维度数组和矩阵运算,还针对数组运算提供大量的数学函数库。通常来说比较经常见到的是一维和二维数组,多维数组比较少见。

菜鸟教程的Numpy教程

一、数组创建

[1]. N维数组

创建一维数组的方法:数组 = numpy.array(列表1,列表2,....,列表n)
创建二维数组的方法:数组 = numpy.array([列表1,列表2,....,列表n])
注:列表和元组都能被转换为数组(numpy.ndarray类型),在创建n维数组时,需要添加n个中括号[ ]
在这里插入图片描述

import numpy
lst1 = [1,2,3]
lst2 = [4,5,6]
lst3 = [7,8,9]
array = numpy.array([lst1,lst2,lst3])
print(array)

[2]. 指定数组类型

数组 = numpy.array(列表,dtype = 类型)
在这里插入图片描述

import numpy
lst = [1,2,3]
array = numpy.array(lst,dtype = str) #设置该数组元素为字符串类型
print(array)

[3]. 指定数组大小、数值类型,并以0填充

数组 = numpy.zeros(shape,dtype= 类型)

注:用这种方法创建的数组元素默认为0

参数介绍
shape数组的形状,如果填y时,表示一维数组中含有y个元素。如果填(x,y,z)表示有x个一维数组,每个数组中有y个元素。如果填(x,y,z)时,表示有x个二维数组,每个二维数组中有y个一维数组,每个一维数组中有z个元素。以此类推。
dtype若不填类型时,默认为float类型
在这里插入图片描述
import numpy
array = numpy.zeros((2,3,4),dtype = int)
print(array)

[4]. 指定数组大小、数值类型,并以1填充

数组 = numpy.ones(shape,dtype= 类型)

注:用这种方法创建的数组元素默认为1

参数介绍
shape数组的形状,如果填y时,表示一维数组中含有y个元素。如果填(x,y,z)表示有x个一维数组,每个数组中有y个元素。如果填(x,y,z)时,表示有x个二维数组,每个二维数组中有y个一维数组,每个一维数组中有z个元素。以此类推。
dtype若不填类型时,默认为float类型
在这里插入图片描述
import numpy
array = numpy.ones((2,3,4),dtype = int)
print(array)

[5]. 指定数值范围、数值类型

数组 = numpy.arange(start,stop,step,dtype = 类型)

参数介绍
start起始值,默认为0
stop终止值(不包含)
step步长,默认为1
dtype若不填类型时,默认为int类型
在这里插入图片描述
import numpy
array = numpy.arange(1,10,1,dtype = int)
print(array)

[6]. 等差数列

数组 = numpy.linspace(start,stop,num,endpoint,retstep,dtype)

注:等差数列的公差将会根据元素个数和数值范围进行变更。

参数介绍
start起始值
stop终止值
num元素个数,默认为50
endpoint是否数值范围中,包含stop,默认为True
retstep是否在数组中显示间距
dtype数值类型
在这里插入图片描述
import numpy
array = numpy.linspace(1,10,10,endpoint = True,dtype = int)
print(array)

[7]. 等比数列

数组 = numpy.logspace(start,stop,num,endpoint,base,dtype)

注:等比数列的公比将会根据元素个数和数值范围进行变更。

参数介绍
start起始值为base的start次方
stop终止值为base的stop次方
num元素个数,默认为50
endpoint是否数值范围中,包含stop,默认为True
base对数中的底数,默认为10
dtype数值类型
在这里插入图片描述
import numpy
array = numpy.logspace(1,2,20,endpoint = True,base=10,dtype= int)
print(array)

二、查看数值特性

[1]. 查看数组的维度

数组.ndim
注:用这个方法可以查看数组是几维的
在这里插入图片描述

import numpy
array = numpy.zeros((2,3),dtype= int) #创建一个2行3列的二维数组
print('维度:',array.ndim)
print(array)

[2]. 查看数组中每个维度的大小

数组.shape
在这里插入图片描述

import numpy
array = numpy.zeros((2,3),dtype= int)
print('大小:',array.shape)
print(array)

[3]. 查看数组中元素的个数

数组.size
在这里插入图片描述

import numpy
array = numpy.zeros((2,3),dtype= int)
print('个数:',array.size)
print(array)

[4]. 查看数组中元素的类型

数组.dtype
在这里插入图片描述

import numpy
array = numpy.zeros((2,3),dtype= int)
print('类型:',array.dtype)
print(array)

[5]. 查看数组中元素的字节大小

数组.itemsize
在这里插入图片描述

import numpy
array = numpy.zeros((2,3),dtype= int)
print('字节大小:',array.itemsize)
print(array)

三、索引和切片

数组的索引是从0开始的,如果一个数组有5个元素,则相应元素的索引为:0 1 2 3 4
数组是由列表、元组转化过来的,所以数组同样有切片的作用。
数组也可以使用负数索引来查询数值,此处就不多介绍切片和负数索引了。

在这里插入图片描述

import numpy
array = numpy.array([1,2,3,4,5],dtype = int)
print(array[0]) #获取数组中的第一个元素值

lst1 = [1,2,3]
lst2 = [4,5,6]
array = numpy.array([lst1,lst2],dtype = int)
print(array[0][2]) #获取lst1中的第3个元素(索引需要减1)

四、数组变形

此处的数组变形不是数组的类型转换,而是数组的形状发生变化,如4行3列变成3行4列。
数组当中的元素值不会发生变化,而且要求变化后的元素总个数不能改变,若4行3列(12个)要转换成2行2列(4个)时将会报错。

在这里插入图片描述

import numpy
lst1 = [1,2,3,4]
lst2 = [5,6,7,8]
array = numpy.array([lst1,lst2],dtype = int) #创建一个2行4列的数组
print(array)
print()
array = array.reshape(4,2) #转换为4行2列的数组
print(array)

五、 数组的组合

数组的组合是针对多个数组的,可以是多个同样的数组进行组合。
数组直接组合:新数组 = nump.concatenate([数组1,数组2,.....,数组N])
垂直方向组合(行):新数组 = nump.vstack([数组1,数组2,......,数组N])
水平方向组合(列):新数组 = nump.vstack([数组1,数组2,......,数组N])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import numpy
array = numpy.array([1,2,3])
print(numpy.concatenate([array,array])) #直接将后面的数组连接到前面数组的末尾
import numpy
array = numpy.array([1,2,3])
print(numpy.vstack([array,array]))
import numpy
array = numpy.array([1,2,3])
print(numpy.hstack([array,array]))

六、数组的拆分

数组的拆分主要是针对单个数组的,将单个数组拆分成多个数组
数组直接拆分:numpy.split(数组,个数)
垂直方向拆分(行):numpy.vsplit(数组,个数)
水平方向拆分(列):numpy.hsplit(数组,个数)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import numpy
lst1 = [1,2,3]
lst2 = [4,5,6]
array = numpy.array([lst1,lst2]) #创建一个2行3列数组
x,y = numpy.split(array,2) #拆分回两个一维数组
print(x)
print(y)
import numpy
lst1 = [1,2,3]
lst2 = [4,5,6]
array = numpy.array([lst1,lst2]) #创建一个2行3列数组
x,y = numpy.vsplit(array,2) #按行拆分,可分为两个1行3列数组
print(x)
print(y)

import numpy
lst1 = [1,2,3]
lst2 = [4,5,6]
array = numpy.array([lst1,lst2]) #创建一个2行3列数组
x,y,z = numpy.hsplit(array,3) #按列拆分,可分为三个含有2行1列数组
print(array)
print()

print(x)
print(y)
print(z)

七、数组的排序

对数组进行升序:numpy.array(数组)
返回对数组进行升序的索引:numpy.argsort()

在这里插入图片描述

import numpy

lis = numpy.array([11,33,22,44])

print(lis)
lis = numpy.sort(lis)
print(lis)

在这里插入图片描述

import numpy

lis = numpy.array([11,33,22,44])

print(lis)
lis = numpy.argsort(lis)
print(lis)

八、数组元素的替换

一次性将数组当中的所有元素根据某个条件进行判断,符合条件的就替换成一个值,不符合条件的就替换成另一个值。
使用方法:numpy.where(数组>条件,值1,值2)
上式中的>号也可以替换成< == !=等条件语句中的逻辑符号
如果值1填写成数组名,符合条件的值将不会变化。
如果值2填写成数组名,不符合条件的值将不会变化。

在这里插入图片描述

import numpy

lis = numpy.array([11,33,22,44])

print(lis)
lis = numpy.where(lis!=33,1,0) #若数组中元素不等于33时赋值1,等于33时赋值0
print(lis)

九、数组元素的过滤

将数组中符合条件的元素过滤掉,剩余的元素保留
使用方法:numpy.extract(数组>条件,数组)
上式中的>号也可以替换成< == !=等条件语句中的逻辑符号

在这里插入图片描述

import numpy

lis = numpy.array([11,33,22,44])

print(lis)
lis = numpy.extract(lis>30,lis) #将大于30的元素保留
print(lis)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦之海岛

创作不易,狐狸叹气

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

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

打赏作者

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

抵扣说明:

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

余额充值