>

배열 V1 를 만들고 싶습니다 모양 (n,p,q) 의   idx 의 인덱스 배열 사용 같은 모양으로 배열 V0 에 적용 모양 (p,q) 의 . 루프로 구성하는 방법은 다음과 같습니다.

for i in range(n):
    V1[i,:,:] = V0[idx[i,:,:],range(q)]

즉, idx[i,:,:]  배열에는 V0 의 1 차원 요소에 대한 인덱스가 포함됩니다. . range(q) 에서 캡처 한 2 차원의 관련 색인으로 적용합니다. 최종 배열 V1 의 첫 번째 차원을 따라 해당 요소를 가져옵니다. .

제 질문은 다음과 같습니다. V1 를 구성하는 방법이 있습니까?  방송/인덱싱 기술을 사용하여 반복하지 않고?

감사합니다.


  • 답변 # 1

    어떻게

    V1 = V0[idx, range(q)] #?
    
    

    예 :

    import numpy as np
    # set up dummy data
    n,p,q = 3,4,5
    V1 = np.empty((n,p,q))
    V0 = np.random.rand(p,q)
    idx = np.random.randint(0,n,(n,p,q))
    # original
    V1_old = V1.copy()
    for i in range(n):
        V1_old[i,:,:] = V0[idx[i,:,:],range(q)]
    # new
    V1_new = V0[idx, range(q)]
    # test
    print(np.array_equal(V1_old, V1_new)) # True
    
    

  • 이전 javascript - 프롬프트를 통해 기능 검증
  • 다음 node.js - Express/MongoDb는 ID로 모든 객체를 찾아서 배열에 저장합니다