首页 > 解决方案 > Python中的Matlab函数等价

问题描述

我在 Matlab 中编写代码,必须返回一个矩阵,它给出一个 0 或 1 来表示原始矩阵中的元素。

我想知道是否有与上述等效的 python 而不运行嵌套循环来实现相同的结果。

c = [2; 1; 3]
temp = eye(3,3)
d = temp(c,:)

d 矩阵需要告诉我原始矩阵中存在什么数字。i = 1, j = 2 如果 1 告诉我原始矩阵的第一个元素是 2

标签: pythonmatlab

解决方案


该代码的“直接”等效项是这个(注意 0 索引,与 matlab 的 1 索引相比)

import numpy
c    = numpy.array( [1, 0, 2] )
temp = numpy.eye( 3 )
d    = temp[c, :]

这是官方 numpy 文档中有关如何使用“索引数组”进行索引的文档的链接

但是,一般而言,您在上面所做的称为“一个热”编码(或“one-of-K”,根据 Bishop2006)。在各种机器学习工具包中有一种热编码的专门方法,它们具有一些优势,因此您可能更愿意查找这些方法。


推荐阅读