【发布时间】:2012-08-31 01:08:30
【问题描述】:
我正在尝试使用 ufunc 有效地将 N * 1 numpy 整数数组映射到 N * 3 numpy 浮点数组。
到目前为止我所拥有的:
map = {1: (0, 0, 0), 2: (0.5, 0.5, 0.5), 3: (1, 1, 1)}
ufunc = numpy.frompyfunc(lambda x: numpy.array(map[x], numpy.float32), 1, 1)
input = numpy.array([1, 2, 3], numpy.int32)
ufunc(input) 给出一个 3 * 3 的 dtype 对象数组。我想要这个数组,但使用 dtype float32。
【问题讨论】:
-
map和input是 Python 内置函数。最好不要为这些名称分配新值,因为这样很难访问 Python 内置函数。 -
frompyfunc的文档说“返回的 ufunc 总是返回 PyObject 数组”。不管这是什么邪恶的原因,有一个相当简单的解决方法:提交一个适当条目类型的输出矩阵作为out参数。