2017-05-18 3 views
1

cvxpy을 사용하여 최적화 문제를 해결하고 있습니다. 출력을 matrixndarray에 저장하고 싶습니다.NumPy 행렬을 NumPy 배열에 복사

감소 된 테스트 사례입니다. acvxpy에서 반환 된 값을 나타냅니다.

import numpy as np 

z = np.zeros((3,7)) 
a = np.matrix("[1; 2; 3]") 
z[0, 0] = a[0] 
z[1, 0] = a[1] 
z[2, 0] = a[2] 

마지막 세 줄을 더 나은 것으로 바꾸고 싶습니다.하지만 시도 할 때마다 오류가 발생합니다. 예 :

>>> z[:, 0] = a 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
ValueError: could not broadcast input array from shape (3,1) into shape (3) 
>>> np.copyto(z[:, 0], a) 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
ValueError: could not broadcast input array from shape (3,1) into shape (3) 

조금 도움 주시면 감사하겠습니다. 고맙습니다.

답변

1

한 가지 간단한 방법 z에 색인에 대한 열 인덱스의 목록을 사용하고 단순히 NumPy와 매트릭스가 a을 할당하는 것 - 매트릭스 a의 트랜스를 사용하는 것입니다

z[:,[0]] = a 

또 다른 방법 , 어떤이 z의 첫 번째 열의 슬라이스 버전으로 할당 할 행 벡터 것 -

z[:,0] = a.T 
+1

'a.A1' 여기서 일 수 있습니다. 나는. 2d 행렬을 1d 행렬로 변환합니다. – hpaulj

+0

@hpaulj 당신은 그'.A1' 물건을 좋아하지, 그렇지? :) – Divakar

+0

@hpaulj 나는 a.A1'과 같은 훌륭한 통사론에 대해 몰랐다 : P –