누마피: 각 행은 벡터입니다 요소에 의해 분할

예를 들어, I have a 누마피 어레이입니다:

data = np.array([[1,1,1],[2,2,2],[3,3,3]])

저는 해당 &quot vector:";

vector = np.array([1,2,3])

How do I 작동합니까) 에 '으로 나눠 각 행의 따라 데이터' subtract 또는 그러하매 그 결과,

sub_result = [[0,0,0], [0,0,0], [0,0,0]]
div_result = [[1,1,1], [1,1,1], [1,1,1]]

긴 얘기를 파선-짧은: 어떻게 수행합니까 각 행에 대해 하나의 작업을 2D 의 스칼라 각 행에 해당하는 1D 배열 어레이에는?

해결책

Here you go. 방금 사용해야 하는 '없음' (또는 'np.뉴라시스') 와 함께 방송:

In [6]: data - vector[:,None]
Out[6]:
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

In [7]: data / vector[:,None]
Out[7]:
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
해설 (2)

이미 언급한 것처럼 '없음' 또는 ',' 와 함께 슬라이싱 np.뉴악스 이렇게 좋은 방법입니다. 또 다른 대체 · 방송 등 전치 같이 사용할 수 있다.

(data.T - vector).T

(data.T / vector).T

더 높은 치수 어레이에는 스와팩스스 '방법을 사용할 수도 있습니다' 이 '롤라시스 누마피 어레이나 누마피' 기능을. 정말 많이 있을 수 있는 방법이 있습니다.

풀러 http://schmidt. devlib. 브로드캐스트용 대한 설명 http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

해설 (0)

39 의 솔루션은 np.뉴라시스 joshadel& 치수에는 추가할 수 있습니다. 대체 사용할 수 있다 정렬하려면 대비해 브로드캐스트용 치수에는 모양 ().

data = np.array([[1,1,1],[2,2,2],[3,3,3]])
vector = np.array([1,2,3])

data
# array([[1, 1, 1],
#        [2, 2, 2],
#        [3, 3, 3]])
vector
# array([1, 2, 3])

data.shape
# (3, 3)
vector.shape
# (3,)

data / vector.reshape((3,1))
# array([[1, 1, 1],
#        [1, 1, 1],
#        [1, 1, 1]])

변형 () 를 사용하면 치수에는 수행하기 위해 줄 방송:

data:            3 x 3
vector:              3
vector reshaped: 3 x 1

단, 데이터 벡터 '정상' t get / 하지만 doesn& # 39, 운영까지도 대답할 수 있습니다. It 의 각 분할합니다 열 ' ( 행일 대신) 에 해당되는 각 요소' 어레이입니다 '벡터'. # 39, '재편' s what you get it& 아니하였으매 경우 '대신' 수 '명시적으로 벡터입니다 1x3 3x1'.

data / vector
# array([[1, 0, 0],
#        [2, 1, 0],
#        [3, 1, 1]])
data / vector.reshape((1,3))
# array([[1, 0, 0],
#        [2, 1, 0],
#        [3, 1, 1]])
해설 (0)

파이썬 방법으로 이 있다.

np.divide(data,vector)

또한 이 변형 처리하는 결과가 실수 형식. 결과가 다른 답을 라운드된 정수 형식입니다.

  • NOTE:* 열 수 있는 데이터와 벡터입니다 일치해야 합니다.

해설 (0)

그냥 일반적인 경우에 사용할 수 있습니다, 답을 stackoverflowuser2010 추가

data = np.array([[1,1,1],[2,2,2],[3,3,3]])

vector = np.array([1,2,3])

data / vector.reshape(-1,1)

이 발쿰치로 너회의 벡터입니다 붙여넣습니다 '열 행렬을 / 벡터'. 원하는 대로 엘레멘트와이즈 작업을 수행할 수 있습니다. 이게 가장 편리한 방법은 그것에 대해 앞으로 적어도 나에게 뒤 (대부분의 경우) 는 같은 내부 메모리를 사용하여 누마피 그냥 보기입니다 it& # 39 의 변형 효율형 너무.

해설 (0)