您的位置:首页 > 编程语言 > Python开发

numpy的索引与切片

2019-08-20 18:39 846 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Sahar_/article/details/99871110

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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: