numpy 배열의 각 요소를 다른 numpy 1D 배열에 차례로 추가하려고하지만 요소 별 작업이 아닙니다. 보다 구체적으로 다음을 정의하십시오 func
.
import numpy as np
array1 = np.array([1,2,3,4])
array2 = np.array([10,20,30])
def func(array1,array2):
#what goes here?
return output_array
output_array = func(array1,array2)
그래서: output_array = np.array([[11,12,13,14],[21,22,23,24],[31,32,33,34]])
나는 그것을 사용하여 작동하도록 관리했습니다.
def func(array1,array2):
return np.array(list(map(lambda x: x + array1,array2)))
그러나이를 수행하는 훨씬 더 나은 방법이있는 것 같으며이를 n 차원으로 일반화하는 것도 유용 할 것입니다. 나는 시도했다 np.vectorize()
:
def func(array1,array2):
np_function = np.vectorize(lambda x: x + array1)
return np_function(array2)
그러나 이것은 반복기 내의 단일 배열 요소에 시퀀스를 할당하려고 시도하기 때문에 작동하지 않습니다 ( "시퀀스로 배열 요소 설정"오류).
특별한 기능이나 아무것도 필요하지 않습니다. 이것은 numpy의 방송 기능에 대한 교과서 사용 사례입니다 . 필요한 것은 다음과 같습니다.
output_array = array1[None, :] + array2[:, None] # or even array1 + array2[:, None]
이해하려면 다음과 같은 차이점을 살펴보십시오.
print(array1.shape) # (4,)
print(array1[:, None].shape) # (4, 1)
print(array1[None, :].shape) # (1, 4)
a (4, 1)
와 함께 방송 (1, 4)
하면(4, 4)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다