Если вы хотите сравнить два вектора, тогда можно использовать np.meshgrid
для трансляции вектора n
в матрицу n x n
. np.meshgrid(x,x)
вернет две матрицы: первая с вектором, уложенным в строки, вторая - в столбцы. См. документы для получения дополнительной информации.
Тогда вы можете определить функцию как:
def kronecker_matrix(x,y):
kmat = np.meshgrid(x,x)[0] == np.meshgrid(y,y)[1]
return kmat.astype(np.int) #kmat is a boolean, with .astype you pass it to an integer, if you like
#example:
kronecker_matrix(np.arange(5), np.arange(5))
>>array([[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]])