2011-10-04 8 views
-2

EntréeMappage du tuple (R, R) en ((R, R), R)?

[[0 0 0 0 0] 
[0 4 0 0 0] 
[0 1 0 0 0] 
[0 1 2 0 0] 
[0 1 2 3 0]] 

sortie prévue

[[(0, day00) (0, day01) (0, day02) (0, day03) (0, day04)] 
[(0, day10) (4, day11) (0, day12) (0, day13) (0, day14)] 
[(0, day20) (1, day21) (0, day22) (0, day23) (0, day24)] 
[(0, day30) (1, day31) (2, day32) (0, day33) (0, day34)] 
[(0, day40) (1, day41) (2, day42) (3, day43) (0, day44)]] 

connexes

  1. Voici un function pour générer jours aléatoires avec une proportion.
  2. Voici un function pour générer la matrice d'évaluation aléatoire
+0

Qu'est-ce que le signe dollar signifie? Que signifie 'day01'? Qu'essayez-vous de faire? – recursive

+0

@recursive: Pour trouver le functino $ V $ de sorte que $ V: (\ mathbb R, \ mathbb R) \ mapstop ((\ mathbb R, \ mathbb R), \ mathbb R) $, avec les contraintes ci-dessus. En anglais, j'ai une matrice de valorisation $ A $ et je veux que chaque valeur $ v_ {ij} \ dans A $ soit associée à une date aléatoire dans la matrice. Une façon plus simple de le faire est de créer une matrice de date de la même taille que $ A $. Un moyen facile de décompresser la matrice et de l'associer aux dates? – hhh

+0

Est-ce une énigme? – hymloth

Répondre

1

Numérisez la matrice source et générer une matrice de résultat, un à un:

random_matrix = generate_random_matrix(...) # the way you want 
result = [] 
for row in random_matrix: 
    result_row = [] 
    for value in row: 
    result_row.append((value, randomDate(...))) 
    result.append(result_row) 
print result # or whatever 

Un chemin plus court mais plus cryptique utiliserait compréhensions:

result = [ 
    [(value, randomDate(...)) for value in row] 
    for row in genenerate_random_matrix(...) 
] 
+0

belle façon de penser! +1 – hhh

+0

... mais je me demande toujours si nous réinventons la roue? Peut-être, numpy a ceci ... doit continuer à chercher ... un produit ... – hhh

0
def o(inputt): 
    output = [] 
    for i, arr in enumerate(inputt): 
     n = [] 
     for j, x in enumerate(arr): 
      n.append((x, "day" + str(i) + str(j))) 
     output.append(n) 
    return output 

print o([[0, 0, 0, 0, 0], 
[0, 4, 0, 0, 0], 
[0, 1, 0, 0, 0], 
[0, 1, 2, 0, 0], 
[0, 1, 2, 3, 0]]) 
0
x = [[0, 0, 0, 0, 0,], 
    [0, 4, 0, 0, 0,], 
    [0, 1, 0, 0, 0,], 
    [0, 1, 2, 0, 0,], 
    [0, 1, 2, 3, 0,],] 

enum = enumerate 
[[(item, 'day%02d' % (i*10+j)) for j, item in enum(row)] for i, row in enum(x)] 

donne

[[(0, 'day00'), (0, 'day01'), (0, 'day02'), (0, 'day03'), (0, 'day04')], 
[(0, 'day10'), (4, 'day11'), (0, 'day12'), (0, 'day13'), (0, 'day14')], 
[(0, 'day20'), (1, 'day21'), (0, 'day22'), (0, 'day23'), (0, 'day24')], 
[(0, 'day30'), (1, 'day31'), (2, 'day32'), (0, 'day33'), (0, 'day34')], 
[(0, 'day40'), (1, 'day41'), (2, 'day42'), (3, 'day43'), (0, 'day44')]]