第8节,索引,切片与迭代

numpy 切片

这一节的学习会是比较轻松的,前提是你对python列表的索引与切片操作非常熟练,在这方面,你完全可以照搬照抄python列表的操作

1. 索引

使用numpy索引,你可以获取指定索引位置的值,下面分别演示通过索引获取一维数组和二维数组指定索引位置的值

import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])
print(array[0])         # 正向索引 2
print(array[-1])        # 反向索引 6


array_2d = array.reshape((2, 3))
print(array_2d)
print(array_2d[1][2])       # 6

同样的,也可以通过索引来修改数组里的元素

import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])
array[0] = 100
array[-1] = 101

print(array)
print("*"*20)

array_2d = array.reshape((2, 3))
array_2d[0][0] = 200

print(array_2d)

程序输出

[100   2   3   4   5 101]
********************
[[200   2   3]
 [  4   5 101]]

2. 切片操作

怎么对python列表做切片操作,就怎么对numpy数组做切片操作,一样一样的

import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])
array_1 = array[1:3]
print(array_1)      # [2 3]

对于二维的数组,我们要在不同的维度上进行切片

import numpy as np

array = np.arange(1, 10)
array = array.reshape((3, 3))
print(array)

array_1 = array[0:2, 1:3]    # 从第0行到第1行,  从第1列到第2列
print(array_1)

切片的区间是左闭右开的[start, end), 0:2 表示从索引0到索引1,索引2是不会到达的, 切出来的结果是

[[1 2 3]
 [4 5 6]
 [7 8 9]]
 
 
[[2 3]
 [5 6]]

3. 迭代

同python的列表一样,ndarray也支持迭代

import numpy as pd

array = pd.arange(10)
for item in array:
    print(item)

这样的遍历和遍历列表没有任何区别,下面是一个遍历二维数组的例子

import numpy as pd

array = pd.arange(10)
array = array.reshape((2, 5))
for item in array:
    print(item)

程序输出

[0 1 2 3 4]
[5 6 7 8 9]

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案