다음과 같은 3 개의 NumPy 배열이 있습니다.
arr1 = np.array(['a', 'b', 'c', 'd', 'e', 'f']).reshape(2, 3)
arr2 = np.array(['g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']).reshape(2, 5)
arr3 = np.array(['r', 's', 't', 'u']).reshape(2, 2)
열 방식으로 결합하고 싶지만 다음과 같이 각 배열에서 오는 항목 사이의 분리를 유지하도록합니다.
Output:
array([[['a', 'b', 'c'], ['g', 'h', 'i', 'j', 'k'], ['r', 's']],
[['d', 'e', 'f'], ['l', 'm', 'n', 'o', 'p'], ['t', 'u']]], dtype='<U1')
그러나 나를 위해 그것을 달성 할 NumPy 기능을 찾을 수 없습니다. 내가 얻은 가장 가까운 것은 평범한 np.concatenate () 이었지만 출력은 내가 원하는 분리를 유지하지 않습니다.
Input: np.concatenate([arr1, arr2, arr3], axis = 1)
Output:
array([['a', 'b', 'c', 'g', 'h', 'i', 'j', 'k', 'r', 's'],
['d', 'e', 'f', 'l', 'm', 'n', 'o', 'p', 't', 'u']], dtype='<U1')
원하는 효과를 얻을 수있는 방법에 대한 제안이 있습니까?
업데이트 : 몇 가지 훌륭한 답변에 감사드립니다. 난이도를 높이기 위해 동일한 수의 행을 공유하는 가능한 가변 수의 입력 배열을 설명하는 솔루션을 원합니다. 따라서 때로는 3 개, 다른 시간에는 6 개 등이 있습니다.
시도해 볼 수 있습니다.
print(np.array([[x, y, z] for x, y, z in zip(arr1.tolist(), arr2.tolist(), arr3.tolist())]))
또는 내부 행을 배열로 원하는 경우 :
print(np.array([np.array([x, y, z]) for x, y, z in zip(arr1.tolist(), arr2.tolist(), arr3.tolist())]))
산출:
[[['a', 'b', 'c'] ['g', 'h', 'i', 'j', 'k'] ['r', 's']]
[['d', 'e', 'f'] ['l', 'm', 'n', 'o', 'p'] ['t', 'u']]]
그리고 모양은 (2, 3)
예상대로입니다.
편집하다:
의견에서 언급했듯이 다음을 시도하십시오.
l = [arr1, arr2, arr3] # list of the arrays:
print(np.array([np.array([x, y, z]) for x, y, z in zip(*[i.tolist() for i in l])]))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다