numpy中的索引和切片

7 篇文章 0 订阅
7 篇文章 0 订阅

代码演示:

numpy中的索引也是从零开始,切片表示方法和列表中的方法基本相同

首先创建一个10*10二维数组t2:
t2 = np.arange(100).reshape(10,10)

数组的创建方法

import numpy as np

t2 = np.arange(100).reshape(10,10)
print(t2)

t2数组如下

[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]
 [20 21 22 23 24 25 26 27 28 29]
 [30 31 32 33 34 35 36 37 38 39]
 [40 41 42 43 44 45 46 47 48 49]
 [50 51 52 53 54 55 56 57 58 59]
 [60 61 62 63 64 65 66 67 68 69]
 [70 71 72 73 74 75 76 77 78 79]
 [80 81 82 83 84 85 86 87 88 89]
 [90 91 92 93 94 95 96 97 98 99]]

取行操作

例如取t2的第三行:t2[2]

print(t2[2])

结果如下,就是将第三行数据打印输出

[20 21 22 23 24 25 26 27 28 29]

例如取连续的多行,从第三行取到最后:t2[2:]

print(t2[2:])

结果如下:

[[20 21 22 23 24 25 26 27 28 29]
 [30 31 32 33 34 35 36 37 38 39]
 [40 41 42 43 44 45 46 47 48 49]
 [50 51 52 53 54 55 56 57 58 59]
 [60 61 62 63 64 65 66 67 68 69]
 [70 71 72 73 74 75 76 77 78 79]
 [80 81 82 83 84 85 86 87 88 89]
 [90 91 92 93 94 95 96 97 98 99]]

亦或者取不连续的多行,例如取第三行第九行第十行,则用如下形式来写:t2[[2,8,9]]

print(t2[[2,8,9]])

结果如下:

[[20 21 22 23 24 25 26 27 28 29]
 [80 81 82 83 84 85 86 87 88 89]
 [90 91 92 93 94 95 96 97 98 99]]

或者通过轴来取,二维数组有0轴和1轴:
**t2[1,:]**例如这样的形式,逗号前面代表行(0轴),逗号后面代表列(1轴)。

print(t2[1,:])  # 代表取第二行
print(t2[2,:]) 	# 代表取第三行

结果分别是:

[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]

或者以轴的方式来取不连续的行

print(t2[[2,8,9],:])   # 代表取第三九十行

结果则是第三行第九行和第十行:

[[20 21 22 23 24 25 26 27 28 29]
 [80 81 82 83 84 85 86 87 88 89]
 [90 91 92 93 94 95 96 97 98 99]]


取列操作

同样以轴的形式来取列
例如取第一列:t2[:,0] 则是0轴为:,1轴为0

print(t2[:,0])

结果如下:

[ 0 10 20 30 40 50 60 70 80 90]

取连续的多列:

print(t2[:,2:])

结果如下:第三列到第十列的数据

[[ 2  3  4  5  6  7  8  9]
 [12 13 14 15 16 17 18 19]
 [22 23 24 25 26 27 28 29]
 [32 33 34 35 36 37 38 39]
 [42 43 44 45 46 47 48 49]
 [52 53 54 55 56 57 58 59]
 [62 63 64 65 66 67 68 69]
 [72 73 74 75 76 77 78 79]
 [82 83 84 85 86 87 88 89]
 [92 93 94 95 96 97 98 99]]

同样也可以取不连续的多列

print(t2[:,[0,2]])  # 取第一列和第三列

结果:

[[ 0  2]
 [10 12]
 [20 22]
 [30 32]
 [40 42]
 [50 52]
 [60 62]
 [70 72]
 [80 82]
 [90 92]]


取多行和多列

由于是二维数组,所以0轴和1轴都取到具体的值的话,那么结果则是具体的数据

例如取第三行第四列的数据:

print(t2[2,3])

结果则是具体的值:

23

再例如取第三行到第五行,第二列到第四列

print(t2[2:5,1:4])

结果是这样:

[[21 22 23]
 [31 32 33]
 [41 42 43]]

取到的数据是交叉点的位置,如下图所示:


取多个不相邻的点

print(t2[0,2],t2[0,1])	# 直接取值

print(t2[[0,2,1],[1,2,3]])	
# 取到三个值,分别是t2[0,1] t2[2,2] t2[1,3]多对应的值

结果就是俩个具体的值

2 1
[ 1 22 13]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值