2014-07-04 5 views
-1

J'ai un tableau de tableaux:Comment mapper un tableau Python dans un tableau NumPy

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]] 

que je suis en train de la carte dans ce formulaire 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.])]] 

Je l'ai déjà essayé de faire ce qui suit:

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) 

Mais cela n'a pas fonctionné.

+1

Si 'data' est une liste de listes, pourquoi' np.array (data) 'ne suffit-il pas? – Praveen

+0

Pourquoi voudriez-vous une liste de tableaux 1-D plutôt qu'un seul tableau 2-D? – jonrsharpe

+0

Pour une raison quelconque, quand j'ai essayé ceci il a imprimé le tableau sous sa forme originale bien que j'aie importé numpy comme np et array de numpy – SalmaFG

Répondre

2

Oh, je pense que je vois ce que vous essayez de faire maintenant. À partir d'une liste de listes, vous (pour une raison que je ne comprends pas vraiment) vous voulez une liste de listes d'éléments de tableau, chacun contenant un 0 avec l'élément d'origine.

La façon la plus évidente (au prix d'une double boucle for) est

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

Une meilleure chose à faire pourrait être d'utiliser un tableau numpy 3 dimensions.

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

La première variante crie presque pour être écrite comme une compréhension de liste, c'est juste si laconique '[[np. array ([0, x]) pour x dans la rangée] pour la ligne dans les données] '. –

+0

Oui c'est exactement ce que j'essayais de faire. Je vous remercie! – SalmaFG

+0

@moarningsun Oui, en effet, puisque j'utilise python surtout avec numpy, je n'ai jamais vraiment pris de temps pour apprendre à écrire de manière python pure. Edité, comme suggéré. – Praveen

Questions connexes