限制Python中的数字位数

时间:2012-01-08 01:18:06

标签: python string numpy decimal

我想将数字和字符串放在同一个numpy数组中。但是,我很少(难以复制,但有时)遇到错误,其中数字到字符串转换导致一个值无法反向转换为小数(即,我得到“9.8267567e”,而不是“9.8267567 e-5“在阵列中”。这在写入文件后会导致问题。这是我正在做的一个例子(尽管规模要小得多):

import numpy as np
x = np.array(.94749128494582)
y = np.array(x, dtype='|S100')

我的理解是这应该允许100个字符串字符,但有时我会看到~10之后的截止。是否有其他类型我应该分配,或者是一种限制数组中字符数的方法(x)?

1 个答案:

答案 0 :(得分:1)

首先,x = np.array(.94749128494582)可能没有按照您的想法进行操作,因为传递给np.array的参数应该是某种序列或带有数组接口的东西。也许你的意思是x = np.array([.94749128494582])

现在,至于正确保留字符串,可以使用

解决这个问题
y = np.array(x, dtype=object)

然而,正如乔在他的评论中提到的那样,它不是非常简单的,你也可以使用普通的旧python列表。

我建议仔细检查为什么你似乎有这个要求在同一个数组中保存字符串和数字,它闻起来像你可能有不适当的数据结构设置,可以从重新设计/重构中受益。 numpy数组用于快速数值运算,它们不适合用于字符串操作或某种存储/数据库。