numpy数组切片介绍及使用
一、通过pip安装numpy
1.在cmd输入:pip install numpy
2.测试一下python -c “import numpy”,没有报错就正常了
二、numpy简单介绍
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。
通过冒号分隔切片参数 start:stop:step 来进行切片操作:
冒号 : 的解释:
(1)如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。
(2)如果使用了两个参数,如 [2:],表示从该索引开始以后的所有项都将被提取。
(3)如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
(4)如果使用了三个参数,如[2:7:2],那么提取两个索引(不包含停止索引)之间的项,且间隔为2 的取值。
(5)如果参数是负数,如[:-1],那么提取值为除了最后一个全部取。
注意:索引是从0开始计算的。
- 一维数组
如:从数组中获取索引2到索引7的间隔为2的数值
# coding:utf-8
import numpy as np
a=np.arange(10) #[0,1,2,3,4,5,6,7,8,9,10]
b=a[2:7:2] #从索引 2 开始到索引 7 停止,间隔为 2
print(b) #输出结果:[2 4 6]
- 多维数组
同样适用上述索引提取方法
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
# 从索引1处开始切割
print(a[1:])#输出结果:[[3 4 5] [4 5 6]]
切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。注意:冒号分隔切片不包含停止索引。
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
#A[行,列],行索引和列索引以逗号分隔开
print (a[...,1]) # 第2列元素 输出结果:[2 4 5]
print (a[1,...]) # 第2行元素 输出结果:[3,4,5]
print (a[...,1:]) # 第2列及剩下的所有元素 输出结果:[[2 3] [4 5] [5 6]]
三、NumPy 高级索引
以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]] #相当于(0,0)(1,1)(2,0)
print (y) #输出结果:[1,4,5]
以下实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。
import numpy as np
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
rows = np.array([[0, 0], [3, 3]]) #列索引
cols = np.array([[0, 2], [0, 2]]) #行索引
y = x[rows, cols] #相当于(0,0)(0,2)(3,0)(3,2)
print (y) #输出结果:[[ 0 2] [ 9 11]]