我想建立一个M乘M矩阵,其中每个单元都是Kronecker delta的函数
下面是使用for循环执行此操作的代码:
# Note: X is an M by M numpy array
def build_matrix(X):
def kd(i, j):
if i==j:
return 1
else :
return 0
m = np.zeros((len(X), len(X)))
for row in range(len(X)):
for colom in range(len(X)):
m[row][colom] = kd(X[row], X[colom])
return m
有没有更好的Python式的方法来达到这个目的?在
不确定它是否更“Python”,但稍微短一点的方法是(假设你不想使用np.eye公司如其他人所述):
现在有了一个对象(M乘M矩阵),如果行和列的索引不相等,则返回0;如果不相等,则返回1。在
如果要比较两个向量,那么可以选择使用
np.meshgrid
将n
向量广播到n x n
矩阵。np.meshgrid(x,x)
将返回两个矩阵:第一个矩阵的向量堆叠在行中,第二个矩阵在列中。有关详细信息,请参阅docs。在然后可以将函数定义为:
相关问题 更多 >
编程相关推荐