numpy库的使用

本文详细介绍了numpy库的使用,包括创建多维数组、数组属性和函数、元素增删、查找及数学运算。通过示例展示了如何利用numpy进行高效的数据处理,如使用array、arange、linspace创建数组,以及min、max、reshape等函数进行数组操作。
摘要由CSDN通过智能技术生成

numpy库的使用

1、numpy简介

  • 多维数组库,创建多维数组很方便,可以替代多维列表
  • 速度比多维列表快
  • 支持向量和矩阵的各种数学运算
  • 所有元素类型必须相同
  • pip3 install numpy安装(如果安装报Could not build wheels for numpy which use PEP 517 and cannot be installed directly,先使用pip3 install --upgrade pip升级pip,再进行安装)

2、numpy创建数组的函数

函数

功能

array(x)

根据列表或元组x创建数组

arange(x,y,i)

创建一维数组,元素等价于range(x,y,i)

linespace(x,y,n)

创建一个由区间[x,y]的n-1等分点构成的一维数组,包含x和y

random.randint(...)

创建一个元素为随机整数的数组

zeros(n)

创建一个元素全为0.0的长度为n的数组

ones(n)

创建一个元素全为1.0的长度为n的数组

numpy创建数组示例

 

3、numpy数组常用属性和函数

属性或函数

含义或功能

dtype

数组元素的类型

ndim

数组是几维的

shape

数组每一维的长度

size

数组元素个数

argwhere(...)

查找元素

tolist()

转换为list

min()

求最小元素

max()

求最大元素

reshape(...)

改变数组的形状

flatten()

转换成一维数组

numpy数组常用属性和函数示例

 

4、numpy数组元素增删

函数

功能

append(x,y)

若y是数组、列表或元组,就将y的元素添加进数组x得到新数组。否则将y本身添加进数组x得到新数组

concatenate(...)

拼接多个列表

delete(...)

删除数组元素的到新数组

numpy添加数组元素示例

 

numpy删除数组元素示例

 

5、在numpy数组中查找元素示例

 

6、numpy数组的数学运算示例

 

7、numpy数组切片

 示例中的代码

import numpy as np
'''numpy创建数组示例'''
print(np.array([1,2,3,4])) #将列表【1,2,3,4]转化为一位数组输出[1 2 3 4]
print(np.arange(1,9,2)) #相当于rang(1,9,2),输出[1 3 5 7]
print(np.linspace(1,10,4))  #相当于把1到10之间到数字等分成(4-1)份,输出[ 1.  4.  7. 10.]
print(np.random.randint(10,20,[2,3]))#在10(包含)到20(不包含)之间生成随机2行3列的二维数组,输出结果
#[[18 17 15]
 #[17 17 12]]
print(np.random.randint(10,20,5)) #在10(包含)到20(不包含)之间生成随机5个数的一维数组,输出结果[12 15 19 12 11]
a=np.zeros(3) #生成包含3个0的一维数组
print(a) #输出结果[0. 0. 0.]
print(list(a)) #将数组a转化为列表,数据结果[0.0, 0.0, 0.0]
b=np.zeros((2,3),dtype=int) #生成一个2行3列值为0的二维数组,指定数据类型为int型
print(b) #输出结果
#[[0 0 0]
  #[0 0 0]]

"""numpy数组常用属性和函数"""
c=np.array([i for i in range(12)]) #生成一个从0 到11的一维数组
print(c) #输出结果[ 0  1  2  3  4  5  6  7  8  9 10 11]
d=c.reshape((3,4)) #生成一个新的3行4列的数组
print(d) #输出结果
#[[ 0  1  2  3]
 #[ 4  5  6  7]
 #[ 8  9 10 11]]
print(len(d))  #输出数组d有几行,输出结果3
print(d.size)  #输出数组d有几个元素,输出结果12
print(d.ndim) #数组d是几维的,输出结果2
print(d.shape) #数组d的行列数,输出(3, 4)
print(d.dtype) #查看数据类型,输出int64
l=d.tolist() #将二维数组转化为二维列表
print(l) #输出结果 [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
f=d.flatten() #把多维数组转化为一维数组
print(f) #输出结果[ 0  1  2  3  4  5  6  7  8  9 10 11]

"""numpy添加数组元素"""
a3=np.array((1,2,3)) #生成一维数组[1 2 3]
b3=np.append(a3,10) #在a3中添加10,生成新的一维数组b3
print(b3) #输出结果[ 1  2  3 10]
print(np.append(a3,[10,20])) #在a3中添加10,20,输出结果[ 1  2  3 10 20]
c3=np.zeros((2,3),dtype=int)
print(np.append(a3,c3)) #将c3添加到a3中,输出结果[1 2 3 0 0 0 0 0 0]
print(np.concatenate((a3,[10,20],a3))) #将a3,[10,20],a3合并生成新到一维数组,输出结果[ 1  2  3 10 20  1  2  3]
print(np.concatenate((c3,np.array([[10,20,30]])))) #将10,20,30添加到c3的第3行,输出结果
#[[ 0  0  0]
 #[ 0  0  0]
 #[10 20 30]]
# print(np.concatenate(c3,np.array([[10,20,30]])))
print(np.concatenate((c3,np.array([[1,2],[10,20]])),axis=1)) #将c3的第0行尾部添加1,2,第1行的尾部添加10,20,axis=1指定添加的内容为列,输出结果
#[[ 0  0  0  1  2]
 #[ 0  0  0 10 20]]

"""numpy删除数组元素"""
a=np.array([1,2,3,4])
b=np.delete(a,1) #删除数组a中下标为1的元素
print(b) #输出结果[1 3 4]
b=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(np.delete(b,1,axis=0)) #删除b数组中下标为1的行,axis=0表示行,得到新数组
#输出结果
#[[ 1  2  3  4]
 #[ 9 10 11 12]]
print(np.delete(b,1,axis=1))#删除b数组中下标为1的列,axis=1表示行,得到新数组
#输出结果
#[[ 1  3  4]
 #[ 5  7  8]
 #[ 9 11 12]]
print(np.delete(b,[1,2],axis=0))#删除b数组中下标为1、2的行,axis=0表示行,得到新数组
#输出结果[[1 2 3 4]]
print(np.delete(b,[1,3],axis=1))#删除b数组中下标为1、3的列,axis=1表示列,得到新数组
#输出结果
#[[ 1  3]
 #[ 5  7]
 #[ 9 11]]

"""在numpy数组中查找元素"""
a=np.array([1,2,3,5,3,4])
pos=np.argwhere(a==3) #在数组a中查找值为3的元素,分别是下标为2、4的元素
print(pos) #输出结果[[2] [4]] a是一维数组2 4表示列,行为0,默认省略
a=np.array([[1,2,3],[4,5,2]])
print(2 in a) #判断2是不是在数组a中,输出结果True
pos=np.argwhere(a==2)
print(pos) #输出结果[[0 1] [1 2]]表示第0行第1列,第1行第2列
b=a[a>2] #在a中查找大于2第元素
print(b) #输出结果[3 4 5]
a[a>2]=-1 #把数组a中值大于2第元素替换为-1
print(a) #输出结果
#[[ 1  2 -1]
 #[-1 -1  2]]

"""numpy数组的数学运算"""
a=np.array([1,2,3,4])
b=a+1 #数组b为数组a每个元素对应加1
print(b) #输出结果[2 3 4 5]
print(a*b)#a,b数组中每个元素对应相乘得到新的数组,输出结果[ 2  6 12 20]
print(a+b) #a,b数组中每个元素对应相加得到新的数组,输出结果[3 5 7 9]
c=np.sqrt(a*10) #将a中的每个元素乘10,然后开平方根
print(c) #输出结果[3.16227766 4.47213595 5.47722558 6.32455532]

"""numpy数组切片"""
"""numpy数组切片是'视图',是原数组的一部分,而非一部分的拷贝"""
a=np.arange(8)
b=a[3:6] #取下标为3,4,5的元素
print(b) #输出结[3 4 5]
c=np.copy(a[3:6]) #c是拷贝a数组中下标为3 4 5的元素
b[0]=100
print(a) #修改数组a的值 输出结果[  0   1   2 100   4   5   6   7]
print(c) #不会修改数组c的值 输出结果[3 4 5]
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
b=a[1:3,1:4] #取b的1、2行,每行取1、2、3列
print(b)
#输出结果
#[[ 6  7  8]
 #[10 11 12]]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值