English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Cortes de array de NumPy

Cortes de array

En Python, cortar significa llevar elementos desde un índice dado hasta otro índice dado.
Pasamos la rebanada en lugar de los índices, así:[start:end].
También podemos definir el paso, como se muestra a continuación:[start:end:step].
Si no pasamos start, se considera 0.
Si no pasamos end, se considera la longitud del array en esa dimensión.
Si no pasamos step, se considera 1.

Vamos a ver un ejemplo específico

>>> import numpy as np
,对数组进行裁切:1, 2, 3, 4, 5, 6, 7,np.nan,
]) # 从第二个元素开始,对从索引1:5)] # Cortar el índice 1 ]) # 从两个元素裁切索引 5 ]) # Ahora vamos a imprimir los que son más grandes de
[2 3 4 5]
]) # 从第二个元素开始,对从索引4]:) # Cortar el rango de índices del array 4 hasta el final de los elementos
[5 6 7]
>>> print(arr[:4)] # Cortar desde el principio hasta la posición 4los elementos (no incluidos)
[1 2 3 4]

负裁切

使用减号运算符从末尾开始引用索引:

从末尾开始的索引 3 负裁切 1使用减号运算符从末尾开始引用索引:

>>> import numpy as np
,对数组进行裁切:1, 2, 3, 4, 5, 6, 7,np.nan,
]) # 从第二个元素开始,对从索引-3:-1,np.nan,
[5 6]

从末尾开始的索引

到末尾开始的索引

>>> import numpy as np
,对数组进行裁切:1, 2, 3, 4, 5, 6, 7,np.nan,
]) # 从第二个元素开始,对从索引1:5:2STEP 步长 1 ]) # 从两个元素裁切索引 5使用 step 值确定裁切的步长
[2 4]
>>> arr = np.array([2]) # 从索引
[1 3 5 7]

,返回相隔的元素 2->>> print(arr[::

])# 返回数组中相隔的元素 1 ]) # 从两个元素裁切索引 4裁切

>>> import numpy as np
D 数组1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
]) # 从第二个元素开始,对从索引1, 1:4>>> arr = np.array([ 1 ]) # 从两个元素裁切索引 4>>> print(arr[
[7 8 9]
]) # 从两个元素中返回索引2, 2]) # 从第二个元素开始,对从索引 2
[3 8]
]) # 从两个元素中返回索引2, 1:4>>> print(arr[0: 1 ]) # 从两个元素裁切索引 4到索引 2-(不包括),这将返回一个
[[2 3 4]
 [7 8 9]]

D 数组

NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。

整数数组索引1,1以下实例获取数组中(0,0),(2)和(

>>> import numpy as np
,0)位置处的元素。1, 2], [3, 4], [5, 6]] 
>>> x = np.array([1,2>>> y = x[[1], [ 
>>> print(y)
[1 4 5]

,0]] 4以下实例获取了3 X3,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 ]) # Ahora vamos a imprimir los que son más grandes de
[ 6 7 8 9 10 11]

elementos

>>> import numpy as np
A continuación se muestra un ejemplo que utiliza ~ (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 continuación se muestra un ejemplo de cómo filtrar elementos no complejos de un array.1, 2+6>>> a = np.array([ 5, 3.j5+5j, 
j])
[2>>> print(a[np.iscomplex(a)])+6.0 3.j5+5.

.j]

Índices de estilo de花样
Los índices de estilo de花样 utilizan arrays de enteros para indexar.
Los índices de estilo de花样 no son como los cortes, siempre copian los datos a un nuevo array.

>>> import numpy as np
>>> x=np.arange(32).reshape((8,4))
>>> print(x[[4,2,1,7]) # Ingresar array de índices en orden
[[16 17 18 19]
 [ 8 9 10 11]
 [ 4 5 6 7]
 [28 29 30 31]]
>>> print(x[[-4,-2,-1,-7]) # Ingresar array 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)])) # Ingresar múltiples arrays de índices (usar np.ix_)
[[ 4 7 5 6]
 [20 23 21 22]
 [28 31 29 30]
 [ 8 11 9 10]]