我有一个数组数组:
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和原始项。
最明显的方法(以双for循环为代价)是
result = [[np.array([0, x]) for x in row] for row in data]
更好的方法可能是利用3维numpy数组。
temp = np.array(data)
temp = np.expand_dims(temp, 2)
result = np.concatenate((np.zeros(temp.shape), temp), axis=2)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句