новая матрица из существующей - PullRequest
1 голос
/ 27 февраля 2011

Предположим, у меня есть одна матрица с двумя столбцами.Каждый столбец имеет тысячи значений.Элементы 1-го столбца являются нормальными числами.Элементами 2-го столбца являются 0 или 1. Для простоты возьмем такой пример:

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

Я хочу создать новую матрицу P из одного столбца, такую, что если элемент 2-го столбца U равен 0, то элемент P такой же, как соответствующий элемент в 1-м столбце.Но если элемент 2-го столбца U равен 1, то элемент P равен нулю.

Итак, результат вышеприведенного примера:

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

Ответы [ 3 ]

4 голосов
/ 27 февраля 2011

Это было бы тогда:

> P= U(:, 1).* ~U(:, 2)
P =
   25
    0
    0
   52
   32
   12
    0
2 голосов
/ 27 февраля 2011

Вы не сказали, на каком языке программирования этот ответ в 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 голосов
/ 27 февраля 2011

С numpy, в дополнение к ответу есть, вы можете использовать

numpy.where(U[:,1], 0, U[:,0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...