귀하의 질문에 10 자리 식별자가 1 열에 저장되어있는 것으로 알고 있습니다. 맞습니까?
이 따라야하는 것은 매우 쉬운 일이 아닙니다, 간접 많이 진행했지만 결국 unsorted_insert
지금 Z1
에 Z2
의 각 식별자 그래서
sort_idx = np.argsort(Z1[:, 0])
sorted_insert = np.searchsorted(Z1[:, 0], Z2[:, 0], sorter=sort_idx)
# The following is equivalent to unsorted_insert = sort_idx[sorted_insert] but faster
unsorted_insert = np.take(sort_idx, sorted_insert)
곳의 행 번호를 가지고 모든 우리는 필요
new_Z2 = np.hstack((Z2, Z1[unsorted_insert, 1:]))
: 어떻게 그 행의 마지막 두 열을 취득 Z2
배열로 스택하는 것입니다 문제없이 실행되는 작성된 예 :
import numpy as np
z1_rows, z1_cols = 300000, 3
z2_rows, z2_cols = 200000, 300
z1 = np.arange(z1_rows*z1_cols).reshape(z1_rows, z1_cols)
z2 = np.random.randint(10000, size=(z2_rows, z2_cols))
z2[:, 0] = z1[np.random.randint(z1_rows, size=(z2_rows,)), 0]
sort_idx = np.argsort(z1[:, 0])
sorted_insert = np.searchsorted(z1[:, 0], z2[:, 0], sorter=sort_idx)
# The following is equivalent to unsorted_insert = sort_idx[sorted_insert] but faster
unsorted_insert = np.take(sort_idx, sorted_insert)
new_z2 = np.hstack((z2, z1[unsorted_insert, 1:]))
시간이 초과되지 않았지만 모든 작업이 몇 초 내에 완료된 것으로 보입니다.
이 유망 보이지만, 그것은 나에게 오류 던지고 : searchsorted searchsorted 대가로, 라인 (807), 파일 "/usr/lib64/python2.6/site-packages/numpy/core/fromnumeric.py"(절 , side) ValueError : 'side'키워드에 대해 비어 있지 않은 예상 문자열 'Z1 [:, 0], Z2 [:, 0] 주위에 괄호를 넣었을 때 발생하지 않는 것처럼 보입니다. 그러나 실행하기 위해 영원히 걸립니다. – DathosPachy
아,하지만 괄호가있는 줄 2에 대한 또 다른 오류가 있습니다 : sorted_insert = np.searchsorted ((Z1 [:, 0], Z2 [:, 0])), sort_idx) 파일 "/usr/lib64/python2.6/site-packages/numpy/core/fromnumeric.py", 줄 806, 검색 결과 return _wrapit (a, 'searchsorted', v, side) 파일 "/usr/lib64/python2.6/site-packages/numpy/core/fromnumeric.py", 줄 37, _wrapit에 있음 결과 = getattr (asarray (obj), method) (* args, ** kwds) ValueError : 둘 이상의 요소가있는 배열의 진리 값이 모호합니다. a.any() 또는 a.all()을 사용하십시오. – DathosPachy
@DathosPachy 제 응답에 샘플 데이터를 일부 추가했습니다. 중요한 문제없이 실행할 수 있습니다. numpy의 어떤 버전을 사용하고 있습니까? 최신 1.7 업데이트 옵션이 있습니까? – Jaime