Оптимизация скрипта numpy для создания связей между точками в определенном формате и порядке.Python

Программы на Python
Ответить
Anonymous
 Оптимизация скрипта numpy для создания связей между точками в определенном формате и порядке.

Сообщение Anonymous »

Начнем с ситуации, подобной приведенной ниже (см. изображение):
Изображение

Итак, для начала у нас есть ряд точек, расположенных на оси X (расстояние между точками может варьироваться, а количество точек может варьироваться. В например, у нас есть 5 стартовых точек). Мы выполняем сдвиг вдоль y за несколько шагов (в примере за 3 шага), чтобы получить окончательное значение y (в данном случае 3 единицы). Числа, выделенные желтым цветом, соответствуют их индексам.
Моя цель — добиться следующего:
Изображение

Иными словами, создать связи между точками, которые следуют за переводом.
На практике и чтобы упростить задачу, я хотел бы получить окончательный массив, например это:

Код: Выделить всё

final :
[[ 0  6] [ 6 12] [12 18]
[ 1  7] [ 7 13] [13 19]
[ 2  8] [ 8 14] [14 20]
[ 3  9] [ 9 15] [15 21]
[ 4 10] [10 16] [16 22]
[ 5 11] [11 17] [17 23]]
Вот сценарий, который я сделал, который выполняет эту работу:

Код: Выделить всё

import numpy as np
# u: number of points along the x axis
u = 6
# v: number of points along the y axis
v = 4

def x_links(u,v):
matrice = np.arange(u*v).reshape((v, u))
links =np.array([])
for i in range(u):
a = np.repeat(matrice[:,i],2)[1:-1]
links=np.append(links,a).astype(int)
return links.reshape(int(len(links)/2),2)

example = x_links(u,v)
print("final : \n",example)
Мои вопросы:
  • Может ли кто-нибудь придумать лучший способ достижения того же результата? гораздо более питонический скрипт...
  • В частности, можно ли было бы обойтись без использования цикла?
Большое спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... cific-form
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»