Я хотел бы изменить данные, хранящиеся в 1D в 2D: Я имею в виду:1D в 2D массив - питон
из
x|y|a
1|1|a(1,1)
2|1|a(2,1)
3|1|a(3,1)
1|2|a(1,2)
...
в:
x\y|1 |2 |3
1 |a(1,1)|a(1,2)|a(1,3
2 |a(2,1)|a(2,2)|a(2,3)...
3 |a(3,1)|a(3,2)|a(3,3)...
...
Я сделал это от 2 петель:
(rows - array of x,y,a)
for n in range(len(rows)):
for k in range(x_len):
for l in range(y_len):
if ((a[2, n] == x[0, k]) and (a[3, n] == y[0, l])):
c[k, l] = a[0, n]
, но это занимает много времени, поэтому мой вопрос заключается в том, что для Python существует разумное и быстрое решение .
Так уточнить, что я хочу сделать:
Я знаю функцию возврата(), дело в том, что это случайно в массиве .
Итак:
a = np.empty([4, len(rows)]
Я прочитал данные в массив из базы данных, которая имеет 4 столбцов (1,2, х, у) и «LEN (строк) 'ряды.
Меня интересует столбец «1» - этот, который я хочу поместить в новый модифицированный массив.
x = np.zeros([1, x_len], float) y = np.zeros([1, y_len], float)
х представляет собой вектор отсортированного колонка (х) из массива , но без duplicitas с длиной x_len
(я прочитал его запрос sql: выберите отдельный ...)
у представляет собой вектор отсортированного колонка (у) из массива (без duplicitas) с длиной y_len
Затем я делающий массив:
c = np.zeros([x_len, y_len], float)
и помещено 3 петлями (извините за ошибку до) данные с rray в: >
for n in range(len(rows)): for k in range(x_len): for l in range(y_len): if ((a[2, n] == x[0, k]) and (a[3, n] == y[0, l])): c[k, l] = a[0, n]
Пример:
массив а
array([[1, 3, 6, 5, 6], [1, 2, 5, 5, 6], [1, 4, 7, 1, 2], ## x [2, 5, 3, 3, 4]]) ## y
векторов: х и у
[[1,2,4,7]] ## x with x_len=4 [[2,3,4,5]] ## y with y_len=4
Массив с
array([[1, 5, 0, 0], [0, 0, 0, 0], [0, 0, 0, 3], [0, 6, 0, 0]])
последний массив с выглядит следующим образом (первый а [0] записывается в):
x\y 2|3|4|5 ----------- 1 1|5|0|0 2 0|0|0|0 4 0|0|0|3 7 0|6|0|0
Я надеюсь, что я не сделал ошибку, как это написано в массив с.
Большое спасибо за любую помощь.
Я знаю, что вы, вероятно, потратили много времени форматирования вашего вопроса, но все
сделать это трудно, чтобы помочь с форматированием. – Levon
избавился от
и сделал его проще. В следующий раз используйте теги «code», чтобы было легче увидеть ваш код :) – hammythepig
Здесь три петли, а не два. И каково значение 'len (rows)'? Кажется, вы зацикливаете значения 'x' и' y', проверяя каждую пару против одной строки 'a'. Существует почти наверняка лучший способ сделать это, но я не могу сказать, что такое 'x',' y' и 'a'; ваша индексация заставляет его выглядеть так, как если бы они были более сложными структурами данных. Дайте нам простой пример - скажем, пример из 9 строк, написанный в правильном синтаксисе Python, чтобы мы могли просто скопировать и вставить код. Затем вы получите сетку 3x3. – senderle