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

2 投票
1 回答
1403 浏览
提问于 2025-04-18 08:51

我的问题就是标题所说的那样:我有一个整数的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,但我没法正确地把它作为参数传给Orange.data.Table(),因为它需要的是文件名,而不是文件本身)。

有没有什么办法可以实现这个目标(除了使用中间的物理文件,这个方法虽然明显但一点也不优雅)?

另外,我也试过把numpy数组转换成字符串,但出现了错误,提示如下:

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

1 个回答

0

你可以把你的数组映射到一个文件上,然后让orange去读取这个映射后的文件。或者,你也可以试着把你的np数组转换成一个python数组,然后再让orange读取这个数组。

撰写回答