English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O cortar em Python significa levar elementos de um índice给定 para outro índice给定.
Nós passamos fatias assim em vez de índices:[start:end].
Também podemos definir o passo, conforme mostrado a seguir:[start:end:step].
Se não passarmos start, é considerado 0.
Se não passarmos end, é considerado o comprimento do array dentro da dimensão.
Se não passarmos step, é considerado 1.
Vamos olhar para um exemplo específico
>>> import numpy as np >>> arr = np.array([1, 2, 3, 4, 5, 6, 7,np.nan, >>> print(arr[1:5)] # Cortar o índice 1 到索引 5 ]) # Agora, vamos imprimir os valores maiores [2 3 4 5] >>> print(arr[4]:) # Cortar o array de índices 4 até o final dos elementos [5 6 7] >>> print(arr[:4)] # Cortar do início até o índice 4(não incluído) elementos [1 2 3 4]
使用减号运算符从末尾开始引用索引:
从末尾开始的索引 3 到末尾开始的索引 1,对数组进行裁切:
>>> import numpy as np >>> arr = np.array([1, 2, 3, 4, 5, 6, 7,np.nan, >>> print(arr[-3:-1,np.nan, [5 6]
使用 step 值确定裁切的步长
>>> import numpy as np >>> arr = np.array([1, 2, 3, 4, 5, 6, 7,np.nan, >>> print(arr[1:5:2]) # 从索引 1 到索引 5,返回相隔的元素 [2 4] >>> print(arr[::2])# 返回数组中相隔的元素 [1 3 5 7]
从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片:
>>> import numpy as np >>> arr = np.array([1, 2, 3, 4, 5],6, 7, 8, 9, 10]] >>> print(arr[1, 1:4]) # 从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片 [7 8 9] >>> print(arr[2, 2]) # 从两个元素中返回索引 2 [3 8] >>> print(arr[2, 1:4]) # 从两个元素裁切索引 1 到索引 4(不包括),这将返回一个 2-D 数组 [[2 3 4] [7 8 9]]
NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。
以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。
>>> import numpy as np >>> x = np.array([1, 2],3, 4],5, 6]] >>> y = x[[1,2],1,0]] >>> print(y) [1 4 5]
以下实例获取了 4X3 数组中的四个角的元素。行索引是 [3,3]],而列索引是 [2]],而列索引是 [2]]。
>>> import numpy as np >>> x = np.array([ 1, 2], 3, 4, 5], 6, 7, 8], 9, 10, 11]] >>> print(x) [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] >>> rows = np.array([3,3]] >>> cols = np.array([2],[0,2]] >>> y = x[rows,cols] >>> print(y) [[ 0 2] [ 9 11]]
返回的结果是包含每个角元素的 ndarray 对象。
可以借助切片 : 或 … 与索引数组组合。如下面实例:
>>> import numpy as np >>> a = np.array([1,2,3],4,5,6],7,8,9]] >>> b = a[1:3, 1:3] >>> c = a[1:3,1,2]] >>> d = a[...1:] >>> print(b) [[5 6] [8 9]] >>> print(c) [[5 6] [8 9]] >>> print(d) [[2 3] [5 6] [8 9]]
我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。
以下实例获取大于 5 的元素:
>>> import numpy as np >>> x = np.array([ 1, 2], 3, 4, 5], 6, 7, 8], 9, 10, 11]] >>> print(x) [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] >>> print(x[x > 5]) # 现在我们会打印出大于 5 ]) # Agora, vamos imprimir os valores maiores [ 6 7 8 9 10 11]
elementos
>>> import numpy as np A seguir, mostramos um exemplo que usa ~ (operador de complemento) para filtrar NaN. 1,2>>> a = np.array([np.nan,3,4,5,np.nan, ]) [ 1.j 2.j 3.j 4.j 5>>> print(a[~np.isnan(a)])
j])
>>> import numpy as np A seguir, mostramos como filtrar elementos não complexos de um array.1, 2+6>>> a = np.array([ 5, 3.j5+5j, j]) [2>>> print(a[np.iscomplex(a)])+6.0 3.j5+5.
Indexação Estilosa
A indexação estilosa usa arrays de inteiros para indexar. A indexação estilosa usa arrays de inteiros para indexar.
A indexação estilosa é diferente da fatia, pois sempre copia os dados para um novo array.
>>> import numpy as np >>> x=np.arange(32).reshape((8,4]) >>> print(x[[4,2,1,7]) # Passar arrays de índices em ordem [[16 17 18 19] [ 8 9 10 11] [ 4 5 6 7] [28 29 30 31]] >>> print(x[[-4,-2,-1,-7]) # Passar arrays de índices invertidos [[16 17 18 19] [24 25 26 27] [28 29 30 31] [ 4 5 6 7]] >>> print(x[np.ix_([1,5,7,2],[0,3,1,2]) # Passar múltiplos arrays de índices (usar np.ix_) [[ 4 7 5 6] [20 23 21 22] [28 31 29 30] [ 8 11 9 10]]