Numpy入门——选取数据

1、 单个元素索引

1、1 一维数组

x = np.arange(1, 13)
print(x[1])
2

1、2 多维数组

x = np.arange(1, 13).reshape(3, 4)
print(x[1])
print(x[1][1]) #x[1,1]
[5 6 7 8]

6

2、 切片索引

2、1 多维数组

可以用冒号代替某一行/列的所有值。

x = np.arange(1, 13).reshape(3, 4)
print(x[2, :])
print(x[:, 1])
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

[ 9 10 11 12]

[ 2  6 10]

选取某几行某几列。

print(x[1, 2:4])
[7 8]

3、 索引数组

根据索引数创建一个数组,其中每个数值由被索引数组中对应的值所替换。

3、1 一维数组

允许使用负值。

print(x[np.array([2, 5, 8, 10])])
print(x[np.array([2, 5, -5, 10])])
[ 3  6  9 11]
[ 3  6  8 11]

3、2 多维数组

print(x[np.array([0, 1, 2]), np.array([0, 1, 2])])
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

[ 1  6 11]

只进行部分索引时:

print(x[np.array([0, 1, 2])])
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

索引数组可以与标量相结合:

print(x[np.array([0, 1, 2]), 1])
[ 2  6 10]

4、 布尔索引

4、1 索引维数与数组维数相同

y = x > 10
print(y)
print(x[y])
[[False False False False]
 [False False False False]
 [False False  True  True]]

[11 12]

4、2 索引维数小于数组维数

一维索引维数需要与二维数组的行数相匹配,二位索引维数需要与三维数组的行列数相匹配。

y = x > 6
print(y[:, 2])
print(x[y[:, 2]])
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

[False  True  True]

[[ 5  6  7  8]
 [ 9 10 11 12]]
a = np.arange(30).reshape(2, 3, 5)
b = np.array([[True, True, False], [False, True, True]])
print(a[b])
[[[ 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]]]

[[ True  True False]
 [False  True  True]]

5、 索引数组与切片相结合 

print(x[np.array([0, 2]), 1:3])
[[ 2  3]
 [10 11]]

6、 索引数组与布尔相结合

y = x > 6
print(x[y[:, 2], 1:3])
[[ 5  6  7  8]
 [ 9 10 11 12]]

[[ 6  7]
 [10 11]]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值