【numpy基础】--数组索引
数组索引是指在numpy数组中引用特定元素的方法。numpy的数组索引又称为fancy indexing,比其他编程语言的索引强大很多。
1. 选取数据
numpy的索引除了像其他语言一样选择一个元素,还可以间隔着选取多个元素,也可以用任意的顺序选取元素。
比如一维数组:
arr = np.random.randint(0, 10, 5)
print(arr)
#运行结果
indexes =
print(arr)
#运行结果
indexes =
print(arr)
#运行结果
从上面的示例看出,通过传入 indexes 数组,可以一次选择多个元素。
indexes 数组中的值代表数组arr的下标,从0开始。
对于二维数组:
arr = np.random.randint(0, 10, (5,5))
print(arr)
#运行结果
[
]
rows = np.array()
cols = np.array()
print(arr)
#运行结果
这里 rows 和 cols 分别代表行和列的索引,从0开始。
运行结果选取的是单个元素,分别是:arr,arr,arr。
如果要从二维数组中通过选取行列,而不是选取单个元素的话:
arr = np.random.randint(0, 10, (5,5))
print(arr)
#运行结果
[
]
rows = np.array()
cols = np.array()
arr, cols]
#运行结果
[
]arr, cols] 是先选取3,1,4 行,得到:
[
]
然后选取3,0,1 列,得到:
[
]
2. 与切片结合
fancy indexing可以和之前数组的切片操作相结合:
arr = np.random.randint(0, 10, (5,5))
print(arr)
#运行结果
[
]
rows = np.array()
cols = np.array()
#切片在行上
print(arr[:2, cols])
#运行结果
[
]
#切片在列上
print(arr)
#运行结果
[
]arr[:2, cols] 先选择前2行,然后按照 cols 顺序选择列。
arr 按照 rows 顺序选择行,然后选择后4列。
3. 与掩码结合
fancy indexing也可以和之前介绍的掩码相结合来过滤数组:
arr = np.random.randint(0, 10, (5,5))
print(arr)
#运行结果
[
]
rows = np.array()
mask = np.array()
print(arr, mask])
#运行结果
[
]arr, mask] 先按照 rows 的顺序选择行,然后用mask过滤掉 False 的列。
最后剩下的是 3,1,4 行的 第一列和**最后一列**。
4. 修改数据
最后,fancy indexing还有个重要的作用是修改数据,我们通过fancy indexing选取数据之后,可以直接修改它们。
arr = np.random.randint(0, 10, (5,5))
print(arr)
#运行结果
[
]
rows = np.array()
cols = np.array()
arr = * len(arr)
print(arr)
#运行结果
[
]上面的示例中,将fancy indexing选取出的值修改为100。
注意, * len(arr) 这个代码是根据fancy indexing选取出的元素个数来决定将几个值修改成100。
5. 总结回顾
numpy数组索引的意义在于它可以使数组中的数据更加灵活和易于管理。
通过使用索引,开发人员可以快速访问数组中的特定元素,而不需要遍历整个数组。
这可以大大加快计算速度和减少内存使用。
此外,数组索引还可以用于数组的重构和维护。
通过对数组索引的有效使用,开发人员可以轻松地修改和维护数组中的数据,而不会影响到其他使用该数组的程序。
来源:https://www.cnblogs.com/wang_yb/p/17520930.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]