将Numpy数组转换为离散值的Orange表

时间:2014-06-06 11:23:00

标签: python arrays numpy orange

我的问题正是标题所说的:我有一个numpy整数数组,并希望将其转换为具有离散值的Orange表。如果我按照这些步骤操作,则会失败:

import numpy as np
import Orange
a = np.arange(100).reshape((10,10)).astype(np.int8)
fields = ('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten')
d = Orange.data.Domain([Orange.feature.Discrete(x) for x in fields])
t = Orange.data.Table(d, a)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-230-f9b4755dcfba> in <module>()
----> 1 t = Orange.data.Table(d, a)

ValueError: Invalid value for a Discrete variable.

我不想使用中间物理文件(说实话,我尝试通过cStringIO.StringIO使用&#34;虚拟&#34;文件,但我无法正确传递它作为参数到Orange.data.Table(),因为它需要文件名,而不是文件。)

我能做些什么来实现它(除了中间物理文件,这是一个明显但不是优雅的解决方案)?

PS我已经尝试过将numpy数组重新整理成字符串,但它错误地给出了:

AttributeError: Converting arrays of type 'S' is not supported (use one of 'bBhHiIlLfdc')

1 个答案:

答案 0 :(得分:0)

您可以将数组映射到文件,然后使用橙色读取mmap的文件。或者,您可能有幸将您的np数组转换为python数组,然后从橙色数据中读取它。