NumPy索引和切片 NumPy数组的范围 NumPy高级索引 可以通过索引或切片来访问和修改ndarray对象的内容,就像Python的内置容器对象一样。 如前所述,ndarray对象中的项遵循从零开始的索引。有三种索引方法可用 - 字段访问,基本切片 和 高级索引 。 基本切片是Python切片为n维的基本概念的扩展。通过给内置 切片 函数提供 start,stop 和 step 参数来构造Python切片对象。该切片对象被传递给数组以提取数组的一部分。 ** 例1 import numpy as np a = np.arange(10) s = slice(2,7,2) print a[s] 其产出如下 - [2 4 6] 在上面的例子中,一个 ndarray 对象由 arange() 函数准备。然后分别用开始,停止和步骤值2,7和2定义切片对象。当这个slice对象被传递给ndarray时,它的一部分以索引2开始,最多为7,步长为2。 通过直接向 冒号 对象提供由冒号分隔的切片参数((start:stop:step)),也可以获得相同的结果。 例2 import numpy as np a = np.arange(10) b = a[2:7:2] print b 在这里,我们会得到相同的输出 - [2 4 6] 如果只放入一个参数,则会返回与该索引对应的单个项目。如果将a:插入其前面,则将从该索引开始提取所有项目。如果使用两个参数(在它们之间),则将使用默认步骤1对两个索引(不包括停止索引)之间的项目进行切片。 例3 # slice single item import numpy as np a = np.arange(10) b = a[5] print b 其产出如下 - 5 例4 # slice items starting from index import numpy as np a = np.arange(10) print a[2:] 现在,输出将是 - [2 3 4 5 6 7 8 9] 例5 # slice items between indexes import numpy as np a = np.arange(10) print a[2:5] 在这里,输出将是 - [2 3 4] 以上描述也适用于多维的 ndarray 。 例6 import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print a # slice items starting from index print 'Now we will slice the array from the index a[1:]' print a[1:] 输出如下 - [[1 2 3] [3 4 5] [4 5 6]] Now we will slice the array from the index a[1:] [[3 4 5] [4 5 6]] 切片还可以包含省略号(...)以制作与数组维度长度相同的选择元组。如果在行位置使用省略号,它将返回包含行中项目的ndarray。 例子7 # array to begin with import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print 'Our array is:' print a print '\n' # this returns array of items in the second column print 'The items in the second column are:' print a[...,1] print '\n' # Now we will slice all items from the second row print 'The items in the second row are:' print a[1,...] print '\n' # Now we will slice all items from column 1 onwards print 'The items column 1 onwards are:' print a[...,1:] 这个程序的输出如下 - Our array is: [[1 2 3] [3 4 5] [4 5 6]] The items in the second column are: [2 4 5] The items in the second row are: [3 4 5] The items column 1 onwards are: [[2 3] [4 5] [5 6]] NumPy数组的范围 NumPy高级索引