numpy库数组笔记

1.认识numpy

导入numpy库后将别名命名为np

import numpy as np

因为numpy底层用的c语言封装,处理数据的速度比较快。

计算绝对值:print(np.abs(参数))

2.创建数组

python 复制代码
list1 = [1,2,3,4,5] #python自带的列表数据类型
print(list1)
v = np.array(list1)
print(v)

#二维数组[多个一维数组构成]
m = np.array([list1,list1,list1])
print(m)


#三维数组[多个二维数组构成]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)

创建一维数组,二维数组,三维数组的方法

数据的基本属性:

a = v.shape #查询数组的形状

b = v.ndim #查询数组的维度

c = v.size #查询数组中数据个数

d = v.dtype #查询数组中的元素类型

3.数组的维度变化

python 复制代码
list1=[1,2,3,4,5,6,7,8]
v=np.array(list1)
r1=v.reshape(2,2,2) #重构为三维数组2个2行2列的数据组合
print(r1)
print(r1.ndim) #查看数据的维度

r2=r1.reshape(1,8)
print(r2,type(r2))
print(r2.ndim)

r3=r1.ravel()
print(r3)
r4=r1.flatten()
print(r4)

使用reshape函数改变数据的维度,参数-1表示任意

用将高维数据转化成一维通过ravel()函数和flatten()函数

也可以通过对数组的属性直接修改来改变维度

list1=[1,2,3,4,5,6,7,8]

v=np.array(list1)

v.shape=(2,4)#直接对数组的属性进行修改也可以实现降维

4.创建特殊的数组

python 复制代码
#创建全为0的数组
a=np.zeros(5) #只能有一个参数
b=np.zeros((2,2))#(2,2)是一个元组,np.zeros((2,2))#zeros只能接受1个参数,
c = np.zeros((3,2,2))
print(a,'\n',b, 'n',c)
#创建全为1的数组
d = np.ones(5)

#创建全为2的数组   矩阵中全部填充指定的数据
g = np.full((2,2,2), 5)

5.numpy常用的两个函数

r1 = np.arange(0,9,3)

print(r1)

解释:arange函数时左闭右开的表示0到8的数,间隔为3,为0,3,6

r2 = np.linspace(0,1,21)

print(r2)

解释:linspace函数左右都闭的数,表示0到1的数一共生成21个数

6.数组的选取和修改

python 复制代码
#选取某个元素
a = array1[1]
#选取某些元素
b = array1[[1,3,5]]
#切片(左闭右开)
c = array1[0:6]
print(a,b,c)
#修改某个元素
print(array1)
array1[0] = 10

一维数组的选取可以通过索引来选取和修改,批量选取将索引以列表的形式选取

python 复制代码
#选取某个元素
a=array1[1,4]
#选取某行元素
b = array1[3,:] #逗号用来分隔,冒号表示全选
#选取某些行
c=array1[0:2,:]  #选择0到1行的所有元素
d=array1[[0,2],:] #选取0和2行的所有元素
#修改元素
#修改某个元素
array1[1,4]=100
print(array1)
#修改某行元素
array1[3,:]=100
print(array1)
array1[[0,2],:]=50
print(array1)

二维数组的选取要填写两个参数用逗号进行分隔,冒号表示全选,以此规则来对元素进行选取和修改。

python 复制代码
#选取某个元素
#首先确定选取哪一个二维数组
a= array1[1,0,0]
#选取某行元素
b=array1[0,1,:]
#选取某些行元素
c = array1[0,1:3,:]
d=array1[0,[1,3],:]

三维数组的选取和修改规则与二维数组相似,只不过参数变成三个。

7.数组的组合和切割

python 复制代码
#水平组合在水平的方向组合起来
a3 =np.hstack((array1,array2))
a4= np.hstack((array2,array1))
a5 = np.hstack((array1, array2,array1))
a6=np.concatenate((array1,array2),axis=1)#拼接数组,axis=1为水平方向拼接,axis=0为垂直方向拼接
#垂直组合
a7 = np.vstack((array2,array1))

'''------水平切割------'''
array1 =np.arange(16).reshape(4,4)
print(array1)
#水平切制
a=np.hsplit(array1,2)#其中第2个参数,2表示2等分切割
#垂直切割
c =np.vsplit(array1,2)
d = np.split(array1,2,axis=0)
#水平切割
e = np.array_split(array1,3,axis=1)
#垂直切割
f = np.array_split(array1,3,axis=0)

水平组合就是在水平的方向组合起来通过np.hstack(参数1,参数2,...,参数n)进行组合或者通过np.concatenate((array1,array2,...,arrayn),axis=1)参数axis的取值为1为水平组合,取值为0为垂直组合。垂直组合是通过np.vstack(参数1,参数2,...,参数n)进行组合。

水平切割是通过np.hsplit(array1,2)函数进行2等分切割;垂直切割通过np.vsplit(array1,2)函数。

通过np.array_split(array1,3,axis=1)函数切割,axis的取值为1为水平切割,取值为0为垂直切割

8.数组的运算

python 复制代码
#数组的加法【对应位置的元素求和】
print(array1 + array2)#前提 矩阵shape必须一致
#数组的减法[对应位置元素相减]
print(array1 - array2)
#数组的乘法【对应位置相乘】
print(array1 * array2)
#数组的除法[对应位置相除]
print(array1 / array2)

矩阵的shape形状一致,对于位置进行相加,相减,相乘,相除...

9.numpy函数的使用

python 复制代码
#求方差
print(array1.var())
#求标准差
a = array1.std()
#求均值
b = array1.mean()
#求和
c = array1.sum()
#求中位数
#array1.median()
d = np.median(array1)
#求和运算
#对矩阵的行求和
e = array1.sum(axis=1)
#对矩阵的列进行求和
f = array1.sum(axis=0)

通过numpy库的一些算术函数功能进行运算

10.矩阵的运算

python 复制代码
#矩阵的乘法【点乘】
#a * b
a1 = a.dot(b)
a2=np.dot(a,b)
#矩阵求逆
'''
inv():
并不是所有的矩阵都有逆;
即使你没有逆,给你一个逆【伪逆】
'''
a3 = np.linalg.inv(a)
a4=np.dot(a,a3)
print(a4)

这里的运算是点乘相当于数学线性代数的矩阵相乘。通过dot()函数进行点乘运算,通过np.linalg.inv(a)函数可以求a的逆矩阵。

11.读取文件

python 复制代码
#numpy。Loadtxt():从文本文件中加载数据。这个函数假定文件中的每一行都有相同数量的值,并将这些值分隔开。
#你可以使用delimiter参数指定分隔符,如逗号、制表符等。例如:
import numpy as np
data = np.loadtxt('datingTestSet2.txt',delimiter='\t')
print(data)
#将数组保存到txt文件中
array=np.array([[1,2,3],[4,5,6],[7,8,9]])#_创建一个 NumPy_数组
np.savetxt('array.txt',array)#使用savetxt()将数组保存到文本文件中

通过np.loadtxt(文件路径,delimiter参数)函数进行文件读取,delimiter参数可以指定分隔符,如逗号、制表符等。

相关推荐
Slaughter信仰1 小时前
图解大模型_生成式AI原理与实战学习笔记(第四章)
人工智能·笔记·学习
Misnice1 小时前
pip 查看当前包列表
windows·python·pip
qq_356196952 小时前
day29异常处理@浙大疏锦行
python
互亿无线明明2 小时前
如何为全球业务构建可扩展的“群发国际短信接口”?
java·c++·python·golang·eclipse·php·erlang
程序员小远2 小时前
Selenium自动化测试之弹窗处理
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
胡耀超2 小时前
AI的记忆革命:从Titans架构到长时运行智能体,谷歌Google,Anthropic,NeurIPS 2025
人工智能·python·ai·架构·智能体·上下文·titans
川石课堂软件测试2 小时前
使用loadrunner调用mysql API进行性能测试
服务器·数据库·python·selenium·mysql·单元测试·自动化
Python学习导航2 小时前
Python开源项目月排行 2025年10月
开发语言·python
FFF团团员9092 小时前
树莓派学习笔记6:摄像头的基本使用
笔记·学习