2017-01-08 3 views
-1

루프의 기존 numpy 배열에 새 행을 추가하려고합니다. 나는 append, concatenate, vstack과 같은 메소드를 사용하지 않았다.numpy 배열에 새 행 추가

for _ in col_change: 
if (item + 2 < len(col_change)): 
    arr=[col_change[item], col_change[item + 1], col_change[item + 2]] 
    array=np.concatenate((array,arr),axis=0) 
    item+=1 

내가 또한 가장 기본적인 형식으로 시도하고 아직도 나에게 하늘의 배열을 제공합니다

나는 다음과 같은 노력했다. np.arange :

array=np.array([]) 
newrow = [1, 2, 3] 
newrow1 = [4, 5, 6] 
np.concatenate((array,newrow), axis=0) 
np.concatenate((array,newrow1), axis=0) 
print(array) 

나는 출력이 [[1,2,3] [4,5,6] ...] 당신이 [[1,2,3],[4,5,6]]를 원한다면 내가 append없이 당신에게 대안을 제시 할 수

+0

'array = np.concatenate ((array, newrow), axis = 0)'과'array = np.concatenate ((array, newrow1), axis = 0)'이다. 참조로 작동하지 않습니다. 조작 전에'array ='가 필요하다. – Abdou

+1

이미 여기에 답변 : \ [1] : http://stackoverflow.com/questions/3881453/numpy-add-row-to-array – Gyanshu

+0

나는 그것을 시도했지만이 행 끝에 추가 끝납니다 [ 1. 2. 3. 4. 5. 6.] – blaziken105

답변

0

되고 싶어 (또는 루프)

>>> import numpy as np 

>>> np.arange(1,7).reshape(2, 3) 
array([[1, 2, 3], 
     [4, 5, 6]]) 

또는 큰 배열을 만들고 수동으로 입력 : 다음 그것을 바꿀

>>> array = np.empty((2, 3), int) 
>>> array[0] = [1,2,3] 
>>> array[1] = [4,5,6] 
>>> array 
array([[1, 2, 3], 
     [4, 5, 6]]) 

예제에 대한 참고 사항 :

결과를 저장하는 것을 잊어 버린 두 번째 경우에는 array = np.concatenate((array,newrow1), axis=0)으로 만들고 작동합니다 (원하지 않지만 배열이 더 이상 비어 있지 않음). 첫 번째 예제는 심하게 들여 쓰기가 쉬우 며 변수 및/또는 문제를 알지 못하면 디버깅하기가 어렵습니다.

+0

배열을 연결 한 다음 다시 모양을 바꾼다. – blaziken105

1

점진적으로 배열을 구축하는 올바른 방법은 배열로 시작하지 않는 것입니다 :

alist = [] 
alist.append([1, 2, 3]) 
alist.append([4, 5, 6]) 
arr = np.array(alist) 

이 본질적으로 작은을 같은

arr = np.array([ [1,2,3], [4,5,6] ]) 

같은 가장 일반적인 방법입니다 (또는 대형) 샘플 배열.

concatenate (hstack, vstack 등)의 일부 버전을 사용해야하는 좋은 이유가 있더라도 목록에있는 구성 요소를 수집하고 concatante를 한 번 수행하는 것이 좋습니다.