2015-12-08 3 views
-1

Мой вопрос был рассмотрен в матричных мануфакциях в numpy;Расширение матрицы Numpy, например, ниже:

A=([[2, 3, 4, 2, 1, 3, 4, 1, 3, 2 ]]) 

В этой матрице наибольшее значение составляет 4, как вы видите. Я хочу получить матрицу, как показано ниже, эта матрица имеет 4 столбца и 10 строк (10x4), потому что у 10 смотровую

B=([[0, 1, 0, 0], 
    [0, 0, 1, 0], 
    [0, 0, 0, 1], 
    [0, 1, 0, 0], 
    [1, 0, 0, 0], 
    [0, 0, 1, 0], 
    [0, 1, 0, 1], 
    [1, 0, 0, 0], 
    [0, 0, 1, 0], 
    [0, 1, 0, 0]]) 

первого ряда, второго столбец матрицы В должен быть 1, а другие строки элемента должен 0, потому что первый элемент матрицы А равен двум. Аналогична вторая строка и третий столбец shold быть 1 и другие элементы строки должны быть потому, что Secon элемент матрицы равна 3, и так далее ...

Как может быть прописан (Numpy) код Python, который дает нам эту матрицу B в качестве выходного сигнала это очень и очень важно для меня, пожалуйста, помогите ....

ответ

0
import numpy as np 
A=[2, 3, 4, 2, 1, 3, 4, 1, 3, 2 ] 
size=[len(A),np.max(A)] 
B=np.zeros(size) 
for i in range(len(A)): 
    idx=A[i]-1 
    B[i,idx]=1 
print B 
+0

Спасибо за ваши решения !!! Спасибо спасибо очень спасибо ......! – Kemal

+0

@Kemal \t Добро пожаловать. Примите решение, хотя. – DimKoim

1

похоже, вы просто хотите, чтобы соответствовать A со списком (или массива) [1,2,3,4], и отметьте соответствующий столбец

In [110]: A=np.array([2, 3, 4, 2, 1, 3, 4, 1, 3, 2 ]) 

Использование радиовещательной сделать 2d истина/ложь массив совпадений

In [111]: (A[:,None]==np.arange(1,5)) 
Out[111]: 
array([[False, True, False, False], 
     [False, False, True, False], 
     [False, False, False, True], 
     [False, True, False, False], 
     [ True, False, False, False], 
     [False, False, True, False], 
     [False, False, False, True], 
     [ True, False, False, False], 
     [False, False, True, False], 
     [False, True, False, False]], dtype=bool) 

преобразования T/F до 1/0 целых чисел:

In [112]: (A[:,None]==np.arange(1,5)).astype(int) 
Out[112]: 
array([[0, 1, 0, 0], 
     [0, 0, 1, 0], 
     [0, 0, 0, 1], 
     [0, 1, 0, 0], 
     [1, 0, 0, 0], 
     [0, 0, 1, 0], 
     [0, 0, 0, 1], 
     [1, 0, 0, 0], 
     [0, 0, 1, 0], 
     [0, 1, 0, 0]]) 
Смежные вопросы