N dim numpy 배열의 각 요소에 대해 1D numpy 배열에 추가하고 N + 1 dim 배열을 반환합니다.

Toomuchrock

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관