在浮动numpy数组中打印字符

时间:2015-10-14 13:45:41

标签: python arrays numpy

import numpy as np
from random import random
x = np.array( [random() , random(), random()])
label = np.array("Ar")
y = np.hstack((label,x))
print(y)

我想在3-D numpy数组前面添加一个标签,但它不会返回浮点数

['Ar' '0.' '0.' '0.']

我可以覆盖数组来存储浮点数吗?

1 个答案:

答案 0 :(得分:2)

你在这里遇到的问题我,numpy数组只支持每个数组一个类型。通过堆叠一维浮点数组(您的数组 byte[] byteArr = new byte[3]; String decodeText = new String(byteArr); Charset.forName("UTF-8").encode(decodeText); )和类型为y的0D数组创建数组x意味着两个unicode字符('<U2')numpy以单一数据类型为基础。在您的情况下,这是your array label或32个unicode字符。

在ipython中查看您的代码显示了这一点:

'<U32'

因此,通过添加标签,您隐式地将In [1]: import numpy as np In [2]: from random import random In [3]: x = np.array( [random() , random(), random()]) In [4]: x Out[4]: array([ 0.63426736, 0.79011426, 0.66686608]) In [5]: label = np.array("Ar") In [6]: label Out[6]: array('Ar', dtype='<U2') In [7]: y = np.hstack((label,x)) In [8]: y Out[8]: array(['Ar', '0.6342673585559033', '0.7901142593791942', '0.6668660767693766'], dtype='<U32') 中的浮点数转换为unicode字符串。

为避免这种情况,您可以单独管理标签和数组。例如,您可以创建这两个项目的元组:

x

我希望这会有所帮助。