2011-10-04 3 views
-2

ВходнойСопоставление кортежа (R, R) в ((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]] 

Предназначенный выход

[[(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)]] 

Связанные

  1. Здесь function для генерации случайных дней с пропорции.
  2. Здесь function для генерации случайной матрицы оценки
+0

Что означает знак доллара означает? Что означает 'day01'? Что ты пытаешься сделать? – recursive

+0

@recursive: найти functino $ V $, чтобы $ V: (\ mathbb R, \ mathbb R) \ mapstop ((\ mathbb R, \ mathbb R), \ mathbb R) $ с указанными выше ограничениями. На простом английском языке у меня есть матрица оценки $ A $, и я хочу, чтобы каждое значение $ v_ {ij} \ in A $ ассоциировалось со случайной датой в матрице. Более простой способ сделать это - создать матрицу дат того же размера, что и $ A $. Любой простой способ распаковать матрицу и связать ее с датами? – hhh

+0

Это загадка? – hymloth

ответ

1

Сканирование матрицы источника и генерируют результат матрицу, один-к-одному:

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 

Более короткий, но более загадочным образом будет использовать постижения:

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

красивый образ мышления! +1 – hhh

+0

... но мне все еще интересно, изобретаем ли мы колесо? Возможно, у numpy есть это ... нужно продолжать поиск ... какого-то продукта ... – 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)] 

дает

[[(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')]] 

 Смежные вопросы

  • Нет связанных вопросов^_^