2011-02-27 6 views
1

두 개의 행이있는 행렬이 하나 있다고 가정합니다. 모든 열은 수천 개의 값을가집니다. 첫 번째 열의 요소는 일반적인 숫자입니다. 2 열의 요소는이 예를 들자면 0 또는 간략화 1. 같습니다기존 행렬의 새 행렬

U = [ 25 36 12 52 32 12 14 ; 0 1 1 0 0 0 1]' 

I은 ​​새로운 열의 행렬 P를 생성하도록 U의 두 번째 열의 원소는 0의 경우, P의 요소는 첫 번째 열의 해당 요소와 같습니다. 그러나 U의 두 번째 열의 요소가 1이면 P의 요소는 0입니다.

그래서, 위의 예제의 결과는 다음과 같습니다

P = [25 0 0 52 32 12 0]' 

답변

4

다음이 될 것이라고 :

> P= U(:, 1).* ~U(:, 2) 
P = 
    25 
    0 
    0 
    52 
    32 
    12 
    0 
2

이 대답은 C#에서 어떤 프로그래밍 언어를 말하지 않았다

void process() 
{ 
    int column_length = 10; 
    int columns = 3; 
    int[,] k = new int[column_length, columns]; 

    /*fill array 
     . 
     . 
     .*/ 
    //process it 
    for (int i = 0; i < k.GetLength(0); i++) 
    { 
     if (k[i, 1] == 1)//if this row column 0 =1 
     { 
      k[i, 2] = 0; 
     } 
     else if (k[i, 1] == 0)//if this row column 0 =0 
     { 
      k[i, 2] = k[i, 0]; 
     } 
    } 
} 
+0

죄송합니다. 내가 MATLAB을 사용하고 있다고 언급하는 것을 잊었습니다 –

0

numpy으로 먹는 사람의 대답 외에도

을 사용할 수 있습니다.
numpy.where(U[:,1], 0, U[:,0]) 
+0

훌륭합니다. 모두에게 감사 드려요. 그건 완벽하게 작동합니다. 문안 인사 –