Una colección de operación de matriz entre numpy

cuña

Sabemos que el objeto es un conjunto de pitón puede tomar la intersección, unión, diferencia, diferencia simétrica, pero para numpy no hay manera de hacer esto? A veces usamos los pandas en (底层基于numpy)el momento del tratamiento de los datos, no queremos que se separe en colecciones y luego procesados, sino también apoyar nuestra numpy hacerlo, observamos a continuación.

conjunto de Operaciones

establecer en la operación de conjunto

conjunto de operaciones de conjunto, es relativamente sencillo, simplemente miramos

set1 = {1, 2, 3}
set2 = {2, 3, 4}

"""
&: 交集
|: 并集 
-: 差集
^: 对称差集
"""

# 以下几种方式是等价的,但是一般我们都会使用操作符来进行处理,因为比较方便
print(set1 & set2)  # {2, 3}
print(set1.intersection(set2))  # {2, 3}
print(set.intersection(set1, set2))  # {2, 3}

print(set1 | set2)  # {1, 2, 3, 4}
print(set1.union(set2))  # {1, 2, 3, 4}
print(set.union(set1, set2))  # {1, 2, 3, 4}

print(set1 - set2, set2 - set1)  # {1} {4}
print(set1.difference(set2), set2.difference(set1))  # {1} {4}
print(set.difference(set1, set2), set.difference(set2, set1))  # {1} {4}

print(set1 ^ set2)  # {1, 4}
print(set1.symmetric_difference(set2))  # {1, 4}
print(set.symmetric_difference(set1, set2))  # {1, 4}


"""
另外,以上所有的操作都支持多个集合,不仅仅只是两个
"""
print({1, 2, 3} & {2, 3, 4} & {3, 4, 5})  # {3}

El funcionamiento de un juego numpy

Aunque las matrices numpy también son compatibles, etc y los operadores, sino que representan una colección de sentido y nada que hacer.

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])

# 两个数组进行&,表示将数组里面对应元素分别进行"按位与"操作
print(arr1 & arr2)  # [0 2 0]

Por lo tanto, tenemos que utilizar numpy API proporcionada por las operaciones

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])

# 取交集
print(
    np.intersect1d(arr1, arr2)
)  # [2 3]

# 取并集
print(
    np.union1d(arr1, arr2)
)  # [1 2 3 4]

# 取差集
print(
    np.setdiff1d(arr1, arr2),
    np.setdiff1d(arr2, arr1)
)  # [1] [4]

# 取对称差集
print(
    np.setxor1d(arr1, arr2)
)  # [1 4]

array de recibir dos, una matriz de retorno. Pero lo vemos y el cobro de la diferencia es el conjunto de requisitos que no se repita el elemento, pero la matriz no tienen este requisito.

import numpy as np

arr1 = np.array([1, 2, 2, 2, 3])
arr2 = np.array([2, 3, 4])

print(np.intersect1d(arr1, arr2))  # [2 3]
print(np.union1d(arr1, arr2))  # [1 2 3 4]

Pero sólo podemos pasar por encima de dos matrices, si hay varias matrices de la misma?

from functools import reduce
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])
arr3 = np.array([3, 4, 5])

print(reduce(np.intersect1d, [arr1, arr2, arr3]))  # [3]
En general, es bastante sencillo

Supongo que te gusta

Origin www.cnblogs.com/traditional/p/12625998.html
Recomendado
Clasificación