当前位置: 首页 > 面试题库 >

numpy将数组从浮点数转换为字符串

燕光熙
2023-03-14
问题内容

我有一个标准化的浮点数数组(即数组中最大的数字是1),我想将其用作图形的颜色索引。在使用matplotlib使用灰度时,这需要使用0到1之间的字符串,因此我想将float数组转换为字符串数组。我试图通过使用“
astype(’str’)”来执行此操作,但这似乎会创建一些与原始值不相同(甚至接近)的值。

我注意到这一点是因为matplotlib抱怨在数组中找到数字8,这很奇怪,因为它被标准化为1!

简而言之,我有一个float64的数组phis:

numpy.where(phis.astype('str').astype('float64') != phis)

不为空。这令人费解,因为(希望是天真的)它似乎是numpy中的错误,我是否可能做错了什么导致此错误?

编辑:经过调查,这似乎是由于字符串函数处理高精度浮点的方式所致。使用向量化的toString函数(从robbles回答),情况也是如此,但是,如果lambda函数为:

lambda x: "%.2f" % x

然后图表开始工作-越来越好奇。(显然,数组不再相等!)


问题答案:

您对numpy数组在后台如何工作感到有些困惑。数组中的每个项目都必须具有 相同的大小

浮点数的字符串表示无法通过这种方式工作。例如,repr(1.3)yields '1.3',但是repr(1.33)yields
'1.3300000000000001'

浮点数的准确字符串表示形式会生成 可变长度的 字符串。

由于numpy数组由大小均相同的元素组成,因此numpy要求您在使用字符串数组时指定数组中字符串的长度。

如果使用x.astype('str'),它将始终将内容转换为长度为1的字符串数组。

例如,使用x = np.array(1.344566),会x.astype('str')产生'1'

您需要更明确地使用'|Sx'dtype语法,其中dx是数组中每个元素的字符串长度。

例如,用于x.astype('|S10')将数组转换为长度为10的字符串。

更好的是,避免完全使用字符串的numpy数组。通常这是一个坏主意,从您对问题的描述中我看不出要首先使用它们的理由…



 类似资料:
  • 问题内容: 如何转换 至 在NumPy中? 问题答案: 好吧,如果您以列表的形式读取数据,则可以这样做(或等效地,使用列表理解)。(在Python 3,你需要调用的,如果你使用的返回值,因为现在返回一个迭代器)。 但是,如果已经是一串Numpy的字符串,则有更好的方法。使用。

  • 问题内容: 正如标题所说。我不认为有可能这样做,但如果可以告诉我。 这是我正在编写的bukkit(minecraft服务器)插件所必需的。我要执行一个命令:tnt [power]。电源是我想转换为浮点数的返回字符串。 谢谢 问题答案: 用于进行转换。 和之间的区别只是回报。如果需要(对象),请使用前者;如果要数字,请使用后者。

  • 问题内容: http://golang.org/pkg/strconv/ http://play.golang.org/p/4VNRgW8WoB 如何将浮点数转换为字符串格式?这是google游乐场,但未获得预期的输出。(2e + 07)我想得到“ 21312421.213123” 请帮助我从浮点数中获取字符串。谢谢 问题答案: 试试这个 如果只想获得尽可能高的位数精度,则特殊精度-1使用所需的最

  • 问题内容: 我有一个必须解析的二进制文件,并且正在使用Python。有没有办法占用4个字节并将其转换为单个精度浮点数? 问题答案:

  • 问题内容: 我正在尝试将分类变量的字符串数组转换为分类变量的整数数组。 例如 我意识到可以通过循环完成此操作,但我想有一种更简单的方法。谢谢。 问题答案: 好吧,这是一个hack …但是有帮助吗?

  • 问题内容: 这是我正在查看的内容: 因此,我知道不能完全用二进制表示“ p” 1.15的十进制值。 因此,大的十进制大“ bdp”输出对我来说非常有意义……这是浮点数的实际值。 问题1 当浮点数“ p”转换回字符串以进行输出(如1.15)时,如何四舍五入(从内部1.149..375到1.15)? 在文档中的什么地方指定?toString javadoc并没有真正帮助(至少对我来说)。 我在语言规范