【问题标题】:How to convert python int into numpy.int64?如何将 python int 转换为 numpy.int64?
【发布时间】:2017-10-11 23:55:55
【问题描述】:

给定一个int类型的python变量,例如

z = 50
type(z) 
## outputs <class 'int'>

有没有一种直接的方法可以将此变量转换为numpy.int64

似乎必须将此变量转换为 numpy 数组,然后将其转换为 int64。这感觉很复杂。

https://docs.scipy.org/doc/numpy-1.13.0/user/basics.types.html

【问题讨论】:

  • 真正的问题是你为什么需要这样做?
  • @Julien 这是某些 numpy 函数的奇怪副作用。例如z = np.random.geometric(p=0.35, size=10000) 给出的 typez = np.random.geometric(p=0.35) 不同

标签: python numpy int


【解决方案1】:
z_as_int64 = numpy.int64(z)

就这么简单。不过,请确保您有充分的理由 - 几个充分的理由这样做,但大多数情况下,您可以直接使用常规的 int

【讨论】:

  • 不错!只是出于好奇:是否有一个简单的例子(大纲就足够了)来满足这个需求(我不怀疑它存在)?
  • @sascha:主要是确保 NumPy 处理而不是常规 Python 处理溢出之类的东西。
  • @sascha 既然你要了例子,我会给你两个,但一般来说,任何你想使用整数并且需要大于 2,147,483,647 的数字的程序,你都需要一个 int64。第一个例子是会计。在为大多数事情运行书籍时,您只需要简单的整数。现在想象一下,你想平衡整个国家的账目(国内生产总值以万亿计)。您不能将该数字保存在 int32 中。我正在努力识别非洲 1000 万平方公里区域的树木,并希望对它们进行唯一标识。这个数字超过了最大 int32。
  • @EBo:Python 整数是任意精度;它们比numpy.int64更多 范围。
  • @user2357112 你似乎是对的!它在stackoverflow.com/questions/21031093/… 中进行了解释和演示,我从未听说过单独的整数除法'//'。 python 2和3之间有点不同,所以你需要检查兼容性。具体来说,python2类型(9999999999999/3)是long,python3是float。使用 '//' pyth2 返回一个 long,python3 和 in。有趣的是,python 似乎没有 BigFloat 或 float128,但 numpy 有。再次感谢您在 python 中教授新知识。
【解决方案2】:
import numpy as np
z = 3
z = np.dtype('int64').type(z)
print(type(z))

输出:

<class 'numpy.int64'>

但我支持 Juliens 在评论中提出的问题。

【讨论】:

  • 我认为这个答案比下面的答案更通用,并且可以使用从浮点到对象的各种输入来执行。
猜你喜欢
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2021-12-28
  • 2014-07-20
  • 2021-04-27
  • 2020-07-17
相关资源
最近更新 更多