2
NumPy에 대한 질문이 하나 더 있습니다.인덱스에 의한 조건부 배열 배열 수정
조건별로 그리드에서 노드 수를 선택하고 싶습니다. 목적은 원에 가장 가까운 노드를 가져 와서 경계를 원으로 이동하는 것입니다 (Ox 또는 Oy에 의해 거리가 덜 줄어들는지 여부에 따라 다름).
내 구현:
x = np.linspace(0, lx, nx)
y = np.linspace(0, ly, ny)
X, Y = np.meshgrid(x, y)
# one part of condition
distance = R - np.sqrt((X-x0)**2 + (Y-y0)**2)
condition = (distance > 0) & (distance < step)
가 지금은 (x, y)를 얻을 수는
for i, val in np.ndenumerate(X[condition]):
pass
for j, val in np.ndenumerate(Y[condition]):
pass
가 그럼 난 x와 y를 (내가 필요한 즉 비교해야 흥미 노드의 좌표 값, 인덱스가 아님)를 비교하고 비교 결과에 따라 X 또는 Y를 수정하십시오. 그것은처럼 될 수
# distance_X/distance_Y are the distances to circle boundary by Ox/Oy
for x, y in np.nditer([distance_X[condition], distance_Y[condition]]):
if x < y:
# modify X array
if y < x:
# modify Y array
보시다시피, 난 그냥 X[condition] = some_value
그래서 내가 어떻게이 구현할 수 없습니다?
UPD :
완전한 수립 및 @ecatmur의 조언 내 문제를 해결했다. 이 솔루션은 (유사 Y에 대한)처럼 될 수
condition_X = condition & (distance_X < distance_Y)
X[condition_X] = (X - distance_X)[condition_X]
죄송합니다 오해 - 나는 원 경계 노드에서하지 좌표,하지만 거리를 비교해야 Ox/Oy (나는이 질문을 편집했다). – erthalion
여전히 같은 방식으로 작동합니다. 그냥'distance_X
ecatmur
고마워, 그렇지. 하지만 아직 이해할 수없는 순간이 있습니다 -이 작업을 사용하면 어떻게 할 수 있습니까? 'X [condition & condition2] = val' 인덱스에 종속적 인 설정 값입니까? 'X [조건 및 조건 2] = func (색인) ' – erthalion