numpy交换维度_Python之numpy

本文介绍了Python numpy库的基本操作,包括生成和指定数据类型、数组的形状转换、数组运算、读取与存储数据、布尔索引、数组数据的操作等。重点讲解了广播原则、数组拼接、行列交换、寻找最大值下标以及随机数生成。同时,还讨论了numpy中的nan处理和统计函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

9c7536bf7f55184d765dec72eecb86f3.png

1.生成数组

t3 = np.arange(10) 等同 t2 = np.array(range(10))

2.指定数据类型或查看数据类型

print(t3.dtype) t4 = np.array(range(10), dtype='i1')

3.保留两位小数

t6 = np.round(t5,2)

4.查看数组的形状 与行列数

形状: t1.shape 行数: csv.shape[0] 列数: csv.shape[1]

5.修改数组的形状

t3 = t1.reshape((2,3,4))

6.将数组展开为一维

t3.flatten()

7.数组与数组运算

广播原则: 如果两个数组的后缘维度的轴长度相符或者其中一方长度为1,则认为他们是广播兼容的。广播会在缺失和长度为1的维度上进行。 当维度一致,每个元素进行运算; 当维度不一致 假如 低维度的行或者列等于高纬度的行列时,会一次进行运算;

#定义 tt1 = np.arange(24).reshape(4,6) tt2 = np.arange(20,44).reshape(4,6) tt3 = np.arange(6) tt4 = np.arange(6,10).reshape(4,1) #计算验证 print(tt2 - tt1) print('-'*50) print(tt1-tt3) print('-'*50) print(tt3-tt1) print('-'*50) print(tt1-tt4) print('='*50) [[20 20 20 20 20 20] [20 20 20 20 20 20] [20 20 20 20 20 20] [20 20 20 20 20 20]] -------------------------------------------------- [[ 0 0 0 0 0 0] [ 6 6 6 6 6 6] [12 12 12 12 12 12] [18 18 18 18 18 18]] -------------------------------------------------- [[ 0 0 0 0 0 0] [ -6 -6 -6 -6 -6 -6] [-12 -12 -12 -12 -12 -12] [-18 -18 -18 -18 -18 -18]] -------------------------------------------------- [[-6 -5 -4 -3 -2 -1] [-1 0 1 2 3 4] [ 4 5 6 7 8 9] [ 9 10 11 12 13 14]] ==================================================

二. numpy读取数据与存储数据

1.读取
数组的转置:

print(csv.transpose()) print(csv.swapaxes(0,1)) print(tt.T)

2.numpy的索引和切片 (逗号前面取行,逗号后面取列)

a) 取单行:t[2] 取单列: t[:,2] b) 取连续行: t[2:] 取连续的列: t[:, 2:] c) 取不连续的行: t[[2,4]] 取不连续的列: t[:, [2,4]] d) 取多个点: t[[1,2], [3,4]] #等价于 t[1,3] 与 t[2,4] 组成的数组 也可以取步长: t[1::2]

3.numpy中的布尔索引

a) t[t>7] = 100 #数组中大于7的都会等于100 b) t = np.where(t>7, 100, 0) #数组中大于7的等于 100,否则等于0

4.numpy中的 clip

t.clip(7,14) 小于7的替换成7,大于14的替换成14 注意:nan是一个浮点类型

三. 对数组数据的操作

1.拼接

a) 竖直拼接 np.vstack( (t1,t1...) ) b)水平拼接 np.hstack( (t1,t2...) )

2.交换行列

a)行交换 ttt1[[1,2], :] = ttt1[[2,1], :] b)列交换 ttt1[:, [1,3]] = ttt1[:, [3,1]]

3.构造数组

a) 构造全为 0 的数组 : np.zeros( (3,3) ) b) 构造全为 1 的数组:np.ones( (3,3) ) c) 构造对角为 1 的数组 np.eye(3) #三行三列

4.寻找行列最大值的下标

a) 每行内最大值下标 np.argmax(t, axis=0) b) 每列内最大值下标 np.argmin(t, axis=1)

5.numpy生成随机数

40a8efc2b71b9ac61525de5ce8ec0090.png

6.numpy注意点 copy与view

a) a = b 完全不是赋值 ,ab相互影响 b) a = b[:] 视图的操作,一种切片,创建新的对象a,但是a的数据完全由b保管,他们的数据变化也是一致的 c) a = b.copy() 复制, ab互补影响

四.了解nan与 numpy的统计函数

1.nan

a) 两个 nan 是不相等的 b) np.nan != np.nan c) nan与任何值计算都等于nan np.count_nonzero( t!=t ) 使用。t!=t 判断 是否 有nan。此方法会将 True做1相加,当返回值为 0时,表示每nan

2.常用统计函数

42a02eba4504cc231eb909c29aba2cfe.png

3b51e2ae3d42ef007ae478cb7e091246.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值