2017-05-08 1 views
0

나는 여러 개의 2D 배열을 포함하고있는 3D 배열을 가지고 있습니다. 2D 배열도 있습니다. 3D 배열의 모든 요소에서이 2D 배열을 뺍니다. 나는3D 배열에서 2D 배열 빼기

A=[] 
for i in len(range(BT_19)): 
    ref = BT_19[i]-Avg_19 
    A = np.concatenate((A,[ref]),axis=0) 
    print A 

(A 새로운 내가 만든 배열입니다. BT_19는, Avg_19는 2D 배열 차원 배열이다) 이런 짓을하고이 오류,


TypeError         Traceback (most recent call last) 
<ipython-input-83-429b94e5b4d6> in <module>() 
     1 A=[] 
     2 abc=0 
----> 3 for i in len(range(BT_19)): 
     4  ref = BT_19[i]-Avg_19 
     5  A = np.concatenate((A,[ref]),axis=0) 

TypeError: only length-1 arrays can be converted to Python scalars 
+2

'len (range (BT_19))'은 아마도'range (len (BT_19))'이어야합니다. - 실수로 보입니다. – yeputons

+0

나는 그것을 알아 차리지 못했다. 정말 고맙습니다 – talullah

답변

0

당신을 가지고 Numpy의 방송 개념을 사용하여 계산을 수행 할 수 있습니다. 2D 매트릭스가 있으므로 작업 (뺄셈)은 다음과 같이 3D 행렬에 브로드 캐스팅됩니다.

In [1]: x = np.array([[1,1], [2,2]]) 
In [2]: x 
Out[2]: 
array([[1, 1], 
     [2, 2]]) 
In [3]: y = np.random.randint(0,10, size=(5,2,2)) 

In [4]: y.shape 
Out[4]: (5, 2, 2) 

In [5]: y 
Out[5]: 
array([[[3, 2], 
     [4, 6]], 

     [[9, 9], 
     [5, 8]], 

     [[0, 9], 
     [5, 2]], 

     [[6, 3], 
     [9, 5]], 

     [[5, 6], 
     [5, 0]]]) 

In [6]: y - x 
Out[6]: 
array([[[ 2, 1], 
     [ 2, 4]], 

     [[ 8, 8], 
     [ 3, 6]], 

     [[-1, 8], 
     [ 3, 0]], 

     [[ 5, 2], 
     [ 7, 3]], 

     [[ 4, 5], 
     [ 3, -2]]])