>source

배열 목록이 필요합니다. 하나는 모든 데이터이고 다른 하나는 필터입니다.

data= [array([[12., 2., 7.],
              [9., -1., 0.],
              [2., 0., 4.],
              [14., 2., 1.2]]),
       array([[11., 3., 1.],
              [2., 5., 0.],
              [1., -1., 1.],
              [-8., 0., 6.],
              [2., 3., 3.]])]
filter= [array([2., 0., 5.]),
         array([3., -1.])]

각 배열의 값만 유지하고 싶습니다. data , 두 번째 열 ( data[i][:,1] )는 동일한 배열의 값 중 하나와 같습니다. filter (모든 값 filter[i] ). 다음 출력을 원합니다.

out = [array([[12., 2., 7.],
              [2., 0., 4.],
              [14., 2., 1.2]]),
       array([[11., 3., 1.],
              [1., -1., 1.],
              [2., 3., 3.]])]

다음 코드를 시도했지만 성공하지 못했습니다.

out=[]
for a in data:
    for b in filter:
        for c in b:
            if a[:,1]==c:
                bb=a[:,c]
                out=np.append(data,bb)

사전에 도움과 기여에 감사드립니다.

  • 답변 # 1

    np.isin을 사용하여 마스크를 만든 다음 해당 마스크를 사용하여 필터링 할 수 있습니다.

    import numpy as np
    data = [np.array([[12., 2., 7.],
                      [9., -1., 0.],
                      [2., 0., 4.],
                      [14., 2., 1.2]]),
            np.array([[11., 3., 1.],
                      [2., 5., 0.],
                      [1., -1., 1.],
                      [-8., 0., 6.],
                      [2., 3., 3.]])]
    filter_data = [np.array([2., 0., 5.]),
                   np.array([3., -1.])]
    # compute the masks
    masks = [np.isin(arr[:, 1], filter_arr) for arr, filter_arr in zip(data, filter_data)]
    # filter using the masks
    result = [arr[mask] for arr, mask in zip(data, masks)]
    for filtered_arr in result:
        print(filtered_arr)
    
    

    산출

    [[12.   2.   7. ]
     [ 2.   0.   4. ]
     [14.   2.   1.2]]
    [[11.  3.  1.]
     [ 1. -1.  1.]
     [ 2.  3.  3.]]
    
    

  • 이전 콘텐츠 테이블에서 참조 번호가 지정된 라텍스 그림 목록
  • 다음 angular - 인라인 FormGroup