матричная операция
От: barmale-y  
Дата: 16.10.10 11:08
Оценка:
Имеется ли матричная операция, которая при поэлементном делении матрицы на матрицу не будет трогать главную диагональ.
В этом примере в делителе нули по диагонали дают Inf, а нужно чтобы было ноль:
octave:32> a = [1 2 3; 4 5 6; 7 8 9]
a =

   1   2   3
   4   5   6
   7   8   9

octave:33> r = [0 1 2 ; 1 0 2; 1 2 0]
r =

   0   1   2
   1   0   2
   1   2   0

octave:34> a./r
ans =

      Inf   2.0000   1.5000
   4.0000      Inf   3.0000
   7.0000   4.0000      Inf


P.S.1 Стараюсь обойти циклы.

P.S.2 Может в Питоне что-то есть?
Re: матричная операция
От: Аноним  
Дата: 17.10.10 04:03
Оценка: 1 (1)
Здравствуйте, barmale-y, Вы писали:

BY>Имеется ли матричная операция, которая при поэлементном делении матрицы на матрицу не будет трогать главную диагональ.

BY>В этом примере в делителе нули по диагонали дают Inf, а нужно чтобы было ноль:
BY>
BY>octave:32> a = [1 2 3; 4 5 6; 7 8 9]
BY>a =

BY>   1   2   3
BY>   4   5   6
BY>   7   8   9

BY>octave:33> r = [0 1 2 ; 1 0 2; 1 2 0]
BY>r =

BY>   0   1   2
BY>   1   0   2
BY>   1   2   0

BY>octave:34> a./r
BY>ans =

BY>      Inf   2.0000   1.5000
BY>   4.0000      Inf   3.0000
BY>   7.0000   4.0000      Inf
BY>


BY>P.S.1 Стараюсь обойти циклы.


BY>P.S.2 Может в Питоне что-то есть?


есть
Re[2]: матричная операция
От: barmale-y  
Дата: 18.10.10 20:44
Оценка:
Здравствуйте, Аноним, Вы писали:

BY>>Имеется ли матричная операция, которая при поэлементном делении матрицы на матрицу не будет трогать главную диагональ.

BY>>octave:32> a = [1 2 3; 4 5 6; 7 8 9]
BY>>octave:33> r = [0 1 2 ; 1 0 2; 1 2 0]
BY>>P.S.2 Может в Питоне что-то есть?
А>есть

если можно, продемонстрируйте как a/r поэлементно, не трогая главную диагональ в Питон.
Re[2]: матричная операция
От: Aera Беларусь  
Дата: 21.10.10 14:26
Оценка:
Здравствуйте, Аноним, Вы писали:

BY>>P.S.2 Может в Питоне что-то есть?


#python 3
a = [1,2,3,4,5,6,7,8,9]
b = [0,1,2,1,0,2,1,2,0]
ij = [(i,range(3)) for i in range(3)]
a = {(i,j):v for (i,j),v in zip(ij, a)}
b = {(i,j):v for (i,j),v in zip(ij, b)}
c = [a[i,j]/b[i,j] if i!=j else 0 for i,j in ij]


Не проверял..

Циклов нет?
--
RedApe
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.