Task02:Numpy的索引、切片和迭代

索引与切片

索引

数组索引是用方括号([])加序号的形式引用单个数组元素,作用就是可以选取元素或者是赋予新值

获取数组的单个元素

import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(x[2])  # 3
x = np.array([[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]])
print(x[2])  # [21 22 23 24 25]
print(x[2][1])  # 22
print(x[2, 1])  # 22

在多维数组中要索引一个具体的值需要(x[2, 1])或者是(x[2][1])表达,第一个数是表示“行”,第二个数是表示“列”,从0开始算起。

切片索引

切片是指抽取数组的一部分元素从而生成一个新数组,其中切片的语法是(start:stop:step )跟列表的切片的语法是差不多的,如果start省略则numpy 会默认第一个数字是0;如省略stop,则numpy 则会认为第二个数字是该数组的最大索引值;如果step省略,则会默认为1,step为步长。

一维数组的切片

import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(x[0:2])  # [1 2]
#用下标0~5,以2为步长选取数组
print(x[1:5:2])  # [2 4]
print(x[2:])  # [3 4 5 6 7 8]
print(x[:2])  # [1 2]
print(x[-2:])  # [7 8]
print(x[:-2])  # [1 2 3 4 5 6]
print(x[:])  # [1 2 3 4 5 6 7 8]
#利用负数下标翻转数组
print(x[::-1])  # [8 7 6 5 4 3 2 1]

二维数组的切片

import numpy as np
x = np.array([[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]])
print(x[0:2])
# [[11 12 13 14 15]
#  [16 17 18 19 20]]
print(x[1:5:2])
# [[16 17 18 19 20]
#  [26 27 28 29 30]]
print(x[2:])
# [[21 22 23 24 25]
#  [26 27 28 29 30]
#  [31 32 33 34 35]]
print(x[:2])
# [[11 12 13 14 15]
#  [16 17 18 19 20]]
print(x[-2:])
# [[26 27 28 29 30]
#  [31 32 33 34 35]]
print(x[:-2])
# [[11 12 13 14 15]
#  [16 17 18 19 20]
#  [21 22 23 24 25]]
print(x[:])
# [[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]]
print(x[2, :])  # [21 22 23 24 25]
print(x[:, 2])  # [13 18 23 28 33]
print(x[0, 1:4])  # [12 13 14]
print(x[1:4, 0])  # [16 21 26]
print(x[1:3, 2:4])
# [[18 19]
#  [23 24]]
print(x[:, :])
# [[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]]
print(x[::2, ::2])
# [[11 13 15]
#  [21 23 25]
#  [31 33 35]]
print(x[::-1, :])
# [[31 32 33 34 35]
#  [26 27 28 29 30]
#  [21 22 23 24 25]
#  [16 17 18 19 20]
#  [11 12 13 14 15]]
print(x[:, ::-1])
# [[15 14 13 12 11]
#  [20 19 18 17 16]
#  [25 24 23 22 21]
#  [30 29 28 27 26]
#  [35 34 33 32 31]]

布尔索引

布尔索引不外乎就是返回True或者是False两个值

import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x > 5
print(y)
# [False False False False False  True  True  True]
print(x[x > 5])
# [6 7 8]

数组迭代

我们之间接触到的迭代也就是循环结构中的for循环,其实在numpy中也提供了一种可以迭代的方式,它的语法格式是apply_along_axis(func1d, axis, arr)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值