2014-11-09 2 views
0

에 알려져있다 내가 누구의 내가 좌표를 가지고 여러 값을 좀하고 싶습니다 값을 찾을 수 있습니다. 내 좌표 "좌표 운전 '주어진다 (형상 (3, 3, 2, 3) : X와 Y 3 시간 동안 및 2/2 때문에 좌표) 내 값이"값 "(형상에 의해 주어진다 : (3 , 3, 3) 3 회) 즉파이썬 - 좌표가 여러 번

, 난 내가 그것을 수행하는 방법을 잘 모릅니다 ... 각 위치에 대한 "조각"으로 시간에 값을 연결하는

싶습니다 위해 ... 여기에 배열의 작은 부분이 있습니다.

import numpy as np 

Coord = np.array([[[[ 4., 6., 10.], 
    [ 1., 3., 7.]], 

    [[ 3., 5., 9.], 
    [ 1., 3., 7.]], 

    [[ 2., 4., 8.], 
    [ 1., 3., 7.]]], 


    [[[ 4., 6., 10.], 
    [ 2., 4., 8.]], 

    [[ 3., 5., 9.], 
    [ 2., 4., 8.]], 

    [[ 2., 4., 8.], 
    [ 2., 4., 8.]]], 


    [[[ 4., 6., 10.], 
    [ 3., 5., 9.]], 

    [[ 3., 5., 9.], 
    [ 3., 5., 9.]], 

    [[ 2., 4., 8.], 
    [ 3., 5., 9.]]]]) 




Values = np.array([[[-4.24045246, 0.97551048, -5.78904502], 
     [-3.24218504, 0.9771782 , -4.79103141], 
     [-2.24390519, 0.97882129, -3.79298771]], 

     [[-4.24087775, 1.97719843, -5.79065966], 
     [-3.24261128, 1.97886271, -4.7926441 ], 
     [-2.24433235, 1.98050192, -3.79459845]], 

     [[-4.24129055, 2.97886284, -5.79224713], 
     [-3.24302502, 2.98052345, -4.79422942], 
     [-2.24474697, 2.98215901, -3.79618161]]]) 

편집 나중에

내가 (처음없이) 단순화 된 문제의 경우 시도합니다. "for loop"를 사용했지만 somes errors subsist ...이 문제를 해결하는 가장 좋은 방법이라고 생각하십니까? 내 배열이 중요하기 때문에 ... 400x300x100

Coord3 = np.array([[[ 2, 2.], 
     [ 0., 1.], 
     [ 0., 2.]], 

     [[ 1., 0.], 
     [ 2., 1.], 
     [ 1., 2.]], 

     [[ 2., 0.], 
     [ 1., 1.], 
     [ 0., 0.]]]) 


Coord3 = Coord3.astype(int) 


Values2 = np.array([[0., 1., 2.], 
     [3., 4., 5.], 
     [6., 7., 8.]]) 


b = np.zeros((3,3))  

for i in range(Values2.shape[0]): 
    for j in range(Values2.shape[1]): 
     b[Coord3[i,j,0], Coord3[i,j,1]] = Values2[i,j] 

b 
+0

컨텍스트는 Eulerian에서 Lagrangian 설명으로 이동합니다! 나는 Eulerian에서 Lagrangian으로 나의 가치를 여러 번 변환시키는 모든 좌표를 안다! – user3601754

+0

왜 각 숫자 옆에이 점이 필요합니까? What 's point – ha9u63ar

+0

죄송합니다. 이해하지 못했습니다 ... – user3601754

답변

1

두 번째 예는 공상 인덱싱 할 비교적 쉽게 다음 origial 문제가해야 할 조금 어렵

b = np.zeros((3,3), values2.dtype) 
b[coord3[..., 0], coord3[..., 1]] = values2 

,하지만 난이 소요 생각 관심 :

coord = coord.astype(int) 

x_size = coord[..., 0, :].max() + 1 
y_size = coord[..., 1, :].max() + 1 
# x_size, y_size = coord.max(axis=(0, 1, 3)) + 1 
nt = coord.shape[3] 

b = np.zeros((x_size, y_size, nt), values.dtype) 
b[coord[..., 0, :], coord[..., 1, :], np.arange(nt)] = values