当前位置:网站首页>numpy基础
numpy基础
2022-08-08 21:06:00 【大脸猿】
## 1、numpy基础知识
import numpy as np
1、
array = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(array)
print('number of dim:',array.ndim) #几维数组
print('shape:', array.shape)
print('size:', array.size)
2、查看type
a = np.array([1,2,3],dtype=np.int) #默认64位int
print(a.dtype)
b = np.array([1,2,3],dtype=np.int32)
print(b.dtype)
3、定义二维数组(矩阵)
a = np.array([[1,2,3]
,[4,5,6]])
print(a)
4、定义矩阵
a1 = np.zeros((3,4)) #3行4列的零矩阵
print(a1)
a2 = np.ones((3,4),dtype=np.int) #3行4列的全部为1矩阵
print(a2)
a3 = np.empty((3,4)) #3行4列的空矩阵
print(a3)
a4 = np.arange(10,20,2) #从10到20之间的数,步长为2,不包括20
print(a4)
a5 = np.arange(12).reshape(3,4) ##3行4列
print(a5)
a6 = np.linspace(1,10,5) #从1到10的数分成4段5个点
print(a6)
a7 = np.linspace(1,10,6).reshape((2,3)) #从1到10的数分成4段5个点,再重新分成2行3列
print(a7)
5、随机random
a = np.random.random((2,4))
print(a)
6、np.sum() 求和
np.min() 求最小值
np.max() 求最大值
print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a,axis=0)) #axis=0是列数 axis=1是行数
print(np.sum(a,axis=1)) #axis=0是列数 axis=1是行数
7、求最大最小值索引
a = np.arange(2,14).reshape((3,4))
print(a)
print(np.argmin(a)) #最小值的索引
print(np.argmax(a)) #最大值的索引
8、求平均值
print(np.mean(a))
print(np.mean(a,axis=0)) #可以选择对行1还是列0进行求值
print(np.average(a))
9、求中位数
print(np.median(a))
10、逐个累加
print(np.cumsum(a))
11、累差(第二个-第一个,第三个-第二个)
print(np.diff(a))
12、找出非0的数 分别按行和列判断,结果为1或0
print(np.nonzero(a))
13、排序
a = np.arange(14,2,-1).reshape(3,4)
print(a)
print(np.sort(a)) #每行排序
14、转置
print(a.T)
print(np.transpose(a))
15、将数组中的元素限制在a_min, a_max之间
print(np.clip(a,5,9)) #所有小于5的数变成5,大于9的数变成9
—————————————————————————————
2、numpy索引
import numpy as np
1、输出
a = np.arange(3,15) #一维
print(a)
print(a[3])
b = np.arange(3,15).reshape(3,4) #二维,3行4列
print(b)
print('第0行',b[0]) #第0行
print('第二行第1个',b[2][1]) #第二行第1个
print('第二行第1个',b[2][1]) #第二行第1个
print('第二行所有数',b[2:]) #第二行所有数
print('第一列所有数',b[:,1]) #第一列所有数
print('第一行从1到3的值',b[1,1:3]) #第一行从1到2的值
2、输出每一行的数
for row in b:
print('输出每一行的数',row)
3、输出每一列的数
for column in b.T:
print('输出每一列的数',column)
4、将多维数组一行输出
print(b.flatten())
5、输出每一个项目 flat只是一个迭代器,所以不能直接b.flat使用
for item in b.flat:
print(item)
—————————————————————————————
2、array合并
import numpy as np
a = np.array([1,1,1])
b = np.array([2,2,2])
两个array合并:np.vstack((a,b)) np.hstack((a,b))
c = np.vstack((a,b)) #vertical stack上下合并
print(c)
print(a.shape,c.shape)
d = np.hstack((a,b)) #horizontal stack左右合并
print(d)
print(a.shape,d.shape)
print(a[np.newaxis,:]) #给行加了个维度
print(a[np.newaxis,:].shape)
print(a[:,np.newaxis]) #给列加了个维度
#纵向合并
a1 = np.array([1,1,1])[:,np.newaxis]
b1 = np.array([2,2,2])[:,np.newaxis]
d1 = np.hstack((a1,b1))
print(d1)
print(a1.shape,d1.shape)
#多个array合并
e1= np.concatenate((a1,b1,b1,a1))
print('e1',e1)
e2= np.concatenate((a1,b1,b1,a1),axis=0) #纵向合并
print('e2',e2)
e3= np.concatenate((a1,b1,b1,a1),axis=1) #横向合并
print('e3',e3)
—————————————————————————————
## 3、array分割
import numpy as np
1、从0-11共12个数,分成三行四列
a = np.arange(12).reshape((3,4))
print(a)
#2、对列分成2块
print(np.split(a,2,axis=1))
#3、对行分成3块
print(np.split(a,3,axis=0))
#4、不等量分割
#5、纵向分割,横向分割
print(np.array_split(a,3,axis=1))
print(np.vsplit(a,3)) #纵向分割
print(np.hsplit(a,2)) #横向分割
—————————————————————————————
## 四、numpy的copy和deep copy
import numpy as np
a = np.arange(4)
1.copy,赋值 #b,c,d的值都跟随a改变
print('a',a)
b = a
c = a
d = b
a[0] = 11
print('a',a)
print('b',b)
#b,c,d的值都跟随a改变
print('b is a',b is a)
print('c is ',c is a)
print('d is a',d is a)
2.更改其中一个的赋值,剩下所有都会改变
d[1:3] = [22,33]
print('a,b,c,d',a,b,c,d)
3.deep copy,此时更改a的值不会对b有影响
b = a.copy()
print(b)
a[3] = 44
print("a",a,"new_b",b)
边栏推荐
猜你喜欢
随机推荐
C语言打印九九乘法表
Flask 教程 第一章:Hello, World!
GeoServer入门学习:04-发布Shapfile地图数据
pytorch实现数据集读取/下载
go基于泛型实现继承
Flask 教程 第十一章:美化
360杜跃进ISC演讲:保障信创软件的可信性和安全性是信创安全体系的基础
【访问本地项目,localhosthost可以,本地ip不可以】
阿里云祝顺民:算力网络架构的新探索
【转发与重定向(二)】
目标检测论文 Bridng the Gap Between Anchor-based and Anchor-free Detection via ATSS
go实现快速排序
Iterative version of preorder traversal, inorder traversal, and postorder traversal of binary tree
Property or method “XXX“ is not defined on the instance but referenced during render.
快照集成(Snapshot Ensemble)
Idea修改全部变量名
单片机——DHT11 温湿度传感器
C语言打印杨辉三角
Protobuf框架与WebAPI
GeoServer introductory learning: 05-Multi-level MBTiles specification data release







