2016-12-13 2 views
0

numpy 배열의 열에 대해 조건자를 테스트하려는 함수가 있습니다.이 모든 함수의 합계는 10입니다.이 함수는 1D 또는 2D 배열을 취해 하나의 배열을 단일 배열로 처리합니다 기둥.numpy에서 2 차원 배열의 1D 열을 반복하는 방법은 무엇입니까?

내가 좋아하는 뭔가를 할 수있는 2D의 경우를 들어

: python for col in two_dim_array.T: assert sum(col) == 10 을 그리고 나는 1D의 경우 알고 나는 간단하게 수행 할 수 있습니다 python assert sum(one_dim_array) == 10

그러나의 불가지론 단일 코드 경로가 할 수있는 방법이 배열의 유형, 즉 len(my_array.shape)을 켜고 위에있는 코드 스 니펫 중 하나를 사용할 필요가 없습니다. python for col in one_or_two_dim_array.cols(): assert sum(col) == 10 여기서 1D의 경우 루프를 한 번만 통과합니다.

답변

0

그런 뜻입니까?

import numpy as np 

def test(arr): 
    if np.ndim(arr) > 1: 
     arr = arr.T 

    for col in arr: 
     assert np.sum(col) == 10 

arr1 = np.array([1,2,3]) 
arr2 = np.array([[1,2,3],[4,5,6]]) 
print(test(arr1)) 
print 
print(test(arr2)) 
2

다음은 두 경우 모두 열 금액의 1 차원 배열 산출 :

column_totals = one_or_two_dim_array.sum(axis=0).flatten() 

그런 다음 column_totals의 값을 통해 루프 당신이 원하는 수있는 경우를, 또는 한 번에 모든 비교를 주장 :

: 모든 것이 하나 개의 라인으로 축약 될 수 사실

assert np.all(column_totals == 10) 

관련 문제