Fork me on GitHub

numpy入门-索引、切片和迭代

对于数组,和Python列表一样进行索引、切片和迭代

  • arr[n:m]
  • arr[n:m:s]:s为步长
  • 索引下标从0开始
  • 取出某个元素的两种形式:arr[m,n]==arr[m][n]
  • 如果索引中使用三个点,假设x有5个轴
    • x[1,2,...]相当于x[1,2,:,:,:]
    • x[1,2,...]相当于x[1,2,:,:,:]
    • x[...,3]相当于x[:,:,:,:,3]
    • x[4,...,5,:]相当于x[4,:,:,5,:]
  • 关于迭代问题:
    • 默认是对第一轴进行迭代
    • 如果想迭代所有的元素,使用arr.flat方法

切片

1
2
3
import numpy as np
x = np.arange(10)**3 # 0-9每个数的3次方
x
array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729], dtype=int32)
1
x[2:6]   # 第3个数据到第6个数据,共4个
array([  8,  27,  64, 125], dtype=int32)
1
x[2:-2:]
array([  8,  27,  64, 125, 216, 343], dtype=int32)
1
2
x[:6:2] = -1000   # 按照步长为2取数,并将这些数设置为-1000
x
array([-1000,     1, -1000,    27, -1000,   125,   216,   343,   512,
         729], dtype=int32)
1
x[::-1]  # 反转功能
array([  729,   512,   343,   216,   125, -1000,    27, -1000,     1,
       -1000], dtype=int32)
1
2
for i in x:   # 能够用于for遍历
print(i)
-1000
1
-1000
27
-1000
125
216
343
512
729

索引

1
2
a = np.array([[0,1,2,3], [4,5,6,7], [10,11,12,13], [15,16,17,18]])
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [10, 11, 12, 13],
       [15, 16, 17, 18]])
1
2
3
4
a[2,3]   #   注意索引是从0开始的:第3行第4列的元素13
13

a[2][3] # 同上功能
1
a[0:5, 1]
array([ 1,  5, 11, 16])
1
a[0:3]
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [10, 11, 12, 13]])
1
a[0:3, 1]   # 前面0:3表示取出前3个数据,后面的1表示第2列的数据
array([ 1,  5, 11])
1
a[: ,2]   # 取出每行的第3列数据
array([ 2,  6, 12, 17])
1
a[1:3]
array([[ 4,  5,  6,  7],
       [10, 11, 12, 13]])
1
a[1:3, : ]   # 取出每列的第二行和第三行的数据,索引从0开始
array([[ 4,  5,  6,  7],
       [10, 11, 12, 13]])
1
a[-1]   # 当给的参数少于轴数时,其它的轴被认为是全选,等同于a[-1,:]
array([15, 16, 17, 18])
1
a[1,...]   # 连续的3个点...表示所有轴的索引
array([4, 5, 6, 7])
1
a[1, : ]  # 功能类似于上面
array([4, 5, 6, 7])
1
a[1]    # 同上,取出第二行数据
array([4, 5, 6, 7])

迭代

1
2
for row in a:     # for遍历打印的是每行数据
print(row)
[0 1 2 3]
[4 5 6 7]
[10 11 12 13]
[15 16 17 18]
1
2
for element in a.flat:   # 通过数组的flat属性进行迭代,打印每个元素
print(element)
0
1
2
3
4
5
6
7
10
11
12
13
15
16
17
18

本文标题:numpy入门-索引、切片和迭代

发布时间:2019年10月14日 - 15:10

原始链接:http://www.renpeter.cn/2019/10/14/numpy%E5%85%A5%E9%97%A8-%E7%B4%A2%E5%BC%95%E3%80%81%E5%88%87%E7%89%87%E5%92%8C%E8%BF%AD%E4%BB%A3.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea