如何将Python数组映射到NumPy数组中

时间:2014-07-04 12:31:34

标签: python arrays numpy mapping

我有一个数组数组:

import numpy as np
from numpy import array
data = [[1.0,0.56,1.3,1.0],
        [2.0,0.59,1.3,1.0], 
        [3.0,0.63,1.3,1.0],
        [4.0,0.66,1.3,1.0]]

我正在尝试映射到这个NumPy表单:

[[array([ 0.,  1.]), array([ 0.,  0.56]), array([ 0.,  1.3]), array([ 0.,  1.])], [array([ 0.,  2.]), array([ 0.,  0.59]), array([ 0.,  1.3]), array([ 0.,  1.])], [array([ 0.,  3.]), array([ 0.,  0.63]), array([ 0.,  1.3]), array([ 0.,  1.0.])], [array([ 0.,  4.]), array([ 0.,  0.66]), array([ 0.,  1.3]), array([ 0.,  1.])]]

我已经尝试过以下操作:

s = Set([])
maxNDimValues = max(map(lambda x: len(s.union(Set(x))), transpose(data)))
valueMap = identity(maxNDimValues).astype(float64)
trainingitems = map(lambda x: map(lambda y: valueMap[y-1], x), data)

但它不起作用。

1 个答案:

答案 0 :(得分:2)

哦,我想我知道你现在正在尝试做什么。从列表列表中,您(由于某种原因,我真的不明白)需要一个数组元素列表列表,每个元素包含一个0以及原始项目。

最明显的方式(以双循环为代价)

result = [[np.array([0, x]) for x in row] for row in data]

更好的办法可能是使用三维numpy数组。

temp = np.array(data)
temp = np.expand_dims(temp, 2)
result = np.concatenate((np.zeros(temp.shape), temp), axis=2)