3、索引与切片
3.1 一维数组
import numpy as np
arr1 = np.arange(10)
print('原始数组',arr1)
print('取单独的一个数据')
print(arr1[0])
print(arr1[-1])
print('取多个数据')
print(arr1[0:-1])
print(arr1[0:3:2])
注意点:
1、取单个数据,取下标,下标从0开始
2、取多个数据,:隔开,左闭右开
3、参考列表【起始位置:终点位置:步长】左闭右开
3.2 多维数组
arr1 = np.random.randint(0,99,(3,4))
print('原始数组',arr1)
print('###取单独的一行####')
print(arr1[0])
print('####取单个元素####')
print(arr1[0][-1])
print(arr1[0,-1])
展示:
原始数组 [[28 91 89 45]
[35 18 53 96]
[80 41 18 10]]
[28 91 89 45]
45
45
arr1 = np.random.randint(0,99,(3,4))
print('原始数组',arr1)
print('####取单独的一列#####')
print(arr1[:,2])
展示:
原始数组 [[89 40 82 68]
[54 2 89 14]
[ 1 25 45 18]]
[82 89 45]
arr1 = np.random.randint(0,99,(3,4))
print('原始数组',arr1)
print('####取连续多行#######')
print(arr1[0:2])
print('####取连续多行指定多列#######')
print(arr1[0:2,0:2])
print('####取不连续多行######')
print(arr1[[0,2]])
print(arr1[[0,-1]])
展示:
原始数组 [[76 15 19 11]
[98 62 0 48]
[32 77 36 61]]
[[76 15 19 11]
[98 62 0 48]]
[[76 15]
[98 62]]
[[76 15 19 11]
[32 77 36 61]]
arr1 = np.random.randint(0,99,(3,4))
print('原始数组',arr1)
print('####取连续多行,不连续多列#######')
print(arr1[0:2,[0,2]])
print('####取不连续多行,不连续多列#######')
print(arr1[[0,2]][:,[0,2]])
print('###取第一行的第一列数字与第三行的第三列数字#########')
print(arr1[[0,2],[0,2]])
展示:
原始数组 [[49 96 45 75]
[ 9 63 90 9]
[45 87 34 21]]
[[49 45]
[ 9 90]]
[[49 45]
[45 34]]
[49 34]
3.3 条件索引
arr1 = np.array([
[2010,2011,2012],
[2013,2014,2015],
[2017,2018,2019]
])
print('原始数组',arr1)
print('#########')
print(arr1>2013)
print(arr1[arr1>2013])
展示:
原始数组 [[2010 2011 2012]
[2013 2014 2015]
[2017 2018 2019]]
[[False False False]
[False True True]
[ True True True]]
[2014 2015 2017 2018 2019]
注意点:
返回所有条件为真的数据,组合成了一个一维数组
arr1 = np.array([
[2010, 2011, 2012],
[2013, 2014, 2016],
[2017, 2018, 2019]
])
print('原始数组', arr1)
print('#########')
print(arr1 > 2013)
print(arr1[arr1 > 2013])
print(arr1[(2013 < arr1) & (arr1 < 2016)])
print(arr1[(2013 > arr1) | (arr1 > 2016)])
print('###取闰年#########')
print(arr1[(arr1%400==0) | ((arr1%4==0) & (arr1%100!=100))])
print(arr1[~(2013 > arr1)])
展示:
原始数组 [[2010 2011 2012]
[2013 2014 2016]
[2017 2018 2019]]
[[False False False]
[False True True]
[ True True True]]
[2014 2016 2017 2018 2019]
[2014]
[2010 2011 2012 2017 2018 2019]
[2012 2016]
[2013 2014 2016 2017 2018 2019]