我有一个数组数组:
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)
但它不起作用。
答案 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)