NumPy数组基本的索引和切片
2017-11-16 22:12
495 查看
对一维数组来说,NumPy数组的索引切片与Python列表的功能差不多:
但是,特别注意的是,如果要将一个标量值赋值给一个切片,这个修改会直接反映到源数组上(即使你已经新建了一个变量来保存),NumPy数组切片是原始数组的视图。
因为NumPy设计的目的是处理大数据,所以如果要不断复制数据的话会带来巨大的性能和内存问题。因此,NumPy选择所有切片都使用初始视图来提高效率。
对高维数组,可以对各个元素进行递归访问。为了方便,可以传入以逗号隔开的索引列表来选取:
再比如这个:
前一个1:表示从索引1到结尾,即[[4,5,6],[7,8,9]],后一个2是下一个维度的索引2,即6,9,因此返回了[6,9]。
除了基本的索引,还有一种叫花式索引的操作,指的是利用整数数组进行索引。花式索引与切片不同,会把数据复制到新数组中。
>>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> arr[3] 3 >>> arr[2:6] array([2, 3, 4, 5]) >>> arr[3:] array([3, 4, 5, 6, 7, 8, 9])
但是,特别注意的是,如果要将一个标量值赋值给一个切片,这个修改会直接反映到源数组上(即使你已经新建了一个变量来保存),NumPy数组切片是原始数组的视图。
>>> arr_temp = arr[4:6] >>> arr_temp array([4, 5]) >>> arr_temp[1]=7 >>> arr array([0, 1, 2, 3, 4, 7, 6, 7, 8, 9])
因为NumPy设计的目的是处理大数据,所以如果要不断复制数据的话会带来巨大的性能和内存问题。因此,NumPy选择所有切片都使用初始视图来提高效率。
对高维数组,可以对各个元素进行递归访问。为了方便,可以传入以逗号隔开的索引列表来选取:
>>> arr2=np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> arr2[1] array([4, 5, 6]) >>> arr2[1][1] 5 >>> arr2[1,1] 5
再比如这个:
>>> arr2[1:,2] array([6, 9])
前一个1:表示从索引1到结尾,即[[4,5,6],[7,8,9]],后一个2是下一个维度的索引2,即6,9,因此返回了[6,9]。
除了基本的索引,还有一种叫花式索引的操作,指的是利用整数数组进行索引。花式索引与切片不同,会把数据复制到新数组中。
相关文章推荐
- numpy教程 - 基本数据类型、多维数组ndarray及其切片操作
- numpy数组切片索引的详细讲解
- 【NumPy学习指南】day4 多维数组的切片和索引
- Pyhton科学计算工具Numpy(二)之数组索引切片,numpy随机数及文件生成读取
- numpy多为数组和切片的索引
- python数据分析:numpy数组的索引与切片
- Numpy 笔记(二): 多维数组的切片(slicing)和索引(indexing)
- python numpy数组的索引和切片的操作方法
- numpy中的数组切片
- numpy数组切片
- NumPy花哨的索引和索引技巧 通过数组索引
- numpy教程:numpy基本数据类型及多维数组元素存取
- NumPy 索引,切片和迭代
- numpy数组 ndarray对象基本知识
- 『Numpy』numpy.ndarray.view_数组视图_reshape、数组切片、数组内存开辟分析
- Numpy-数组的基本操作(二)
- JavaScript:数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并
- Python Numpy数组的索引和切片
- 关于PYTHON NUMPY数组的切片的符号省略问题
- numpy之索引和切片