배열 1의 첫 번째 요소, 배열 2의 첫 번째 요소, 배열 1의 두 번째 요소, 배열 2의 두 번째 요소 등에서 파이썬 배열을 만듭니다.

팀 스미스

시뮬레이션을 위해 주어진 시간에 일련의 입자의 위치와 속도를 나타내는 상태 벡터를 만들려고합니다. 각 입자에 대해 해당 변수의 값을 제공하는 개별 벡터 x, y, vx, vy를 만들었습니다. 입자 1에 대한 모든 정보와 입자 2에 대한 모든 정보 등을 포함하는 하나의 배열로 자동으로 결합하는 좋은 방법이 있습니까? 감사

Martineau

이런 뜻인가요?

x = [0, 1, 2]
y = [3, 4, 5]
vx = [6, 7, 8]
vy = [9, 10, 11]

c = zip(x, y, vx, vy)
print(c)  # -> [(0, 3, 6, 9), (1, 4, 7, 10), (2, 5, 8, 11)]

Python 3을 사용하는 경우 c = list(zip(x, y, vx, vy)).

어떤 이유로 든 각 입자의 값을 이와 같이 튜플으로 그룹화하지 않으려면 결과가 평평해질 수 있습니다.

c = [item for group in zip(x, y, vx, vy) for item in group]
print(c)  # -> [0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 11]

그러나 튜플을 대신 "이름 지정"하는 것이 좋습니다.

from collections import namedtuple

Particle = namedtuple('Particle', 'x, y, vx, vy')
c = [Particle._make(group) for group in zip(x, y, vx, vy)]
print(c)

산출:

[Particle(x=0, y=3, vx=6, vy=9),
 Particle(x=1, y=4, vx=7, vy=10),
 Particle(x=2, y=5, vx=8, vy=11)]

이렇게하면 이름으로 필드를 참조 할 수 있습니다. 즉 c[1].x, 후속 코드와 계산을 훨씬 더 읽기 쉽게 만들 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관