【问题标题】:Convert floating point array to integer array?将浮点数组转换为整数数组?
【发布时间】:2014-03-06 14:41:41
【问题描述】:

我有一个称为start 的数组。我正在尝试将它用作称为G 的字典中的键。

这是一个数组示例:

array([(1497315, 11965605), (1502535, 11967915), (1501785, 11968665),
       (1520325, 11972295), (1522905, 11972805), (1504545, 11972865),
       (1500465, 11973075), (1489695, 11975205), (1485855, 11978775),
       (1499535, 11978955), (1508205, 11981745), (1521315, 11982615),
       (1501215, 11983335), (1508595, 11985225), (1503045, 11986635),
       (1522425, 11987745), (1512705, 11988255), (1519035, 11989185)...

len(开始)为 50

我想将 start 转换为整数类型,以便可以将其用作字典中的键。

我试过type (start) is int 来确认它不是整数。 Start 是从表示 x 和 y 坐标的两列整数创建的。

与上一个问题相关:

Dictionary not recognizing floating point keys

【问题讨论】:

  • 转换为整数是什么意思?数组元组的元素已经是整数了。
  • start 是如何初始化的?如果它是一个数组,我不确定你为什么(或如何)将它转换为 int。
  • 这篇文章与 OP 的上一篇文章 stackoverflow.com/questions/22226725/… 他之前使用过浮点数有关
  • 数组和列表在 Python 中是两个不同的东西,你的看起来像 Numpy 的 ndarray。

标签: python arrays numpy dictionary integer


【解决方案1】:

我相信是参考your previous question

array = [(1497315.0, 11965605.0),(1502535.0, 11967915.0),(1501785.0, 11968665.0)]
print map(tuple, map(lambda x: map(int, x), array))
# [(1497315, 11965605), (1502535, 11967915), (1501785, 11968665)]

列表理解

print [[int(item) for item in items] for items in array]

如果要将字典的键转换为int,请使用dictionary理解

d = {(15035.0, 119915.0): 'b', (15085.0, 119665.0): 'c', (14975.0, 11965.0): 'a'}
print {(int(k[0]), int(k[1])):v for k, v in d.iteritems()}
# {(15085, 119665): 'c', (14975, 11965): 'a', (15035, 119915): 'b'}

【讨论】:

  • 这会打印转换,有没有办法永久更改它。当您再次键入print array 时,值仍然是浮点数。
  • array = {(int(k[0]), int(k[1])):v for k, v in d.iteritems()} :)
猜你喜欢
  • 2019-12-04
  • 2019-05-10
  • 2018-02-20
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多