Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

328
Visualizações
extraña conversión implícita de tipo de datos en numpy

Creo un número simple de tipo de datos uint como se muestra a continuación:

 import numpy as np a = np.array([1,2,3], dtype=np.uint)

cuando calculo

 a[0] + 1

Espero un resultado de 2, pero da

 2.0

¿Por qué hay una conversión tan implícita a float para np.uint? Tenga en cuenta que no sucede con int o np.int64

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Pude rastrear este problema de github estrechamente relacionado en el repositorio numpy . Según Robert Kern , uno de los principales contribuyentes de numpy y scipy , la decisión sobre el tipo de resultado se toma en función de los tipos de entrada. numpy se basa en rutinas subyacentes que tienen implementaciones específicas de tipo en las que ambos argumentos son del mismo tipo, por lo que debe promoverse a algún tipo común. En este caso, el problema es que un tipo no está firmado y el otro está firmado:

...es una confluencia de varios factores. La implementación de numpy.add() ufunc que subyace en estas rutinas solo tiene implementaciones específicas de tipo donde los dos argumentos son del mismo tipo. Entonces, el sistema ufunc necesita convertir los argumentos en un tipo común. Uno de los argumentos está firmado, por lo que ambos argumentos deben convertirse en un tipo firmado. El tipo con signo más pequeño que puede representar valores hasta el rango máximo de uint64 es float64 (¡Nota! ¡No todos los valores de uint64 se pueden representar como float64 flotantes! ¡Se pierde precisión! Pero es mejor que int64 donde se pierde toda la mitad superior de los valores .).

Tenga en cuenta que ocurre algo similar con los tipos numpy firmados y sin firmar, np.uint y np.int :

 >>> import numpy as np >>> np.uint(0) + np.int64(1) 1.0
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda