2016-07-20 4 views
1

배열의 마지막 행을 어떻게 추가 할 수 있습니까?파이썬에서 2D 배열의 마지막 행을 추가하는 방법

뭔가 같은 :

또한
x= np.array([(1,2,3,4,5)]) 
x= np.append(x, x[0], 1) 

, 당신은 벡터 작업의 방법은 오류를 얻을 이유를 설명 할 수?

for i in range(3): 
    x.append(0) 

x 
[0, 0, 0] 

x= np.append(x, x[0],0) 

어떤 방법으로 벡터 작업을 수행하면 좋을까요? 내가 매트릭스 것으로 2D 벡터와 함께 작동하도록 노력하고, 염두에두고 나는 등 곱셈

답변

2
In [3]: x=np.array([(1,2,3,4,5)]) 
In [4]: x 
Out[4]: array([[1, 2, 3, 4, 5]]) 
In [5]: x=np.append(x,x[0],1) 
... 
ValueError: all the input arrays must have same number of dimensions 

x은 (1,5), x[0]은 (5,) - 하나는 2d이고 다른 하나는 1d입니다. vstack 2 차원하기 위해 x[0]을 변경하기 때문에

In [11]: x=np.vstack([x,x[0]]) 
In [12]: x 
Out[12]: 
array([[1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5]]) 

이, 예를 들어, 작동 (1,5)이므로,이를 x과 연결할 수 있습니다.

In [16]: x=np.concatenate([x, np.atleast_2d(x[-1,:])]) 
In [17]: x.shape 
Out[17]: (3, 5) 

우리는 concatenate을 사용할 수 있습니다 (또는 추가) 첫번째 내지 2d x[-1,:]을 확대.

그러나 일반적으로 반복 연결은 배열을 만드는 느린 방법입니다.

목록을 보려면 다음과 같이 반복하십시오. 그러나 어레이에서는 작동하지 않습니다. 하나의 배열에는 append 메서드가 없습니다. np.append 함수는 새 배열을 반환합니다. x은 변경되지 않습니다.

In [19]: z=[] 
In [20]: for i in range(3): 
    ...:  z.append(0) 
    ...:  
In [21]: z 
Out[21]: [0, 0, 0] 

목록에 추가 된 내용이 반복됩니다. 배열에 반복적으로 추가하는 것이 느립니다.

In [25]: z=[] 
In [26]: for i in range(3): 
    ...:  z.append(list(range(i,i+4))) 

In [27]: z 
Out[27]: [[0, 1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5]] 
In [28]: np.array(z) 
Out[28]: 
array([[0, 1, 2, 3], 
     [1, 2, 3, 4], 
     [2, 3, 4, 5]]) 
+0

자세한 답변을 제공해 주셔서 감사합니다. 2d 대 매트릭스에서 np.array에 대한 경험이 있는지 묻고 싶습니다. 분명히 파이썬에 익숙하지 않은 나는 미래의 매트릭스 계산을하고 싶습니다. – AnarKi

+0

'np.matrix'는 2 차원으로 제한되는'np.ndarray'의 서브 클래스입니다. 따라서 MATLAB 사용자는 코드를 좀 더 익숙하게 만들 수 있습니다. 당신은 numpy 배열로 모든 매트릭스 계산을 할 수 있습니다 (속도 차이는 없습니다). – hpaulj

0

같은 몇 가지 미래 행렬 계산을하고 싶은 이건 어때 :

np.append(arr=x, values=x[-1,None], axis=0) 
#array([[1, 2, 3, 4, 5], 
#  [1, 2, 3, 4, 5]]) 
1
>>> np.append(x,x[-1:],0) 
array([[1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5]]) 
관련 문제