我有一个序列s = [4,3,1,0,5]
,num_classes = 6
并且我想生成一个m
形状为Numpy的矩阵,(len(s), num_classes)
其中m[i,j] = 1 if s[i] == j else 0
。
Numpy中有这样的功能,我可以在其中传递s
和num_classes
?
这也称为k的1编码或一热编码。
timeit
结果:
def b():
m = np.zeros((len(s), num_classes))
m[np.arange(len(s)), s] = 1
return m
In [57]: timeit.timeit(lambda: b(), number=1000)
Out[57]: 0.012787103652954102
In [61]: timeit.timeit(lambda: (np.array(s)[:,None]==np.arange(num_classes))+0, number=1000)
Out[61]: 0.018411874771118164
由于您希望1
每行一个,因此可以arange(len(s))
沿第一个轴使用索引,而s
沿第二个轴使用:
s = [4,3,1,0,5]
n = len(s)
k = 6
m = np.zeros((n, k))
m[np.arange(n), s] = 1
m
=>
array([[ 0., 0., 0., 0., 1., 0.],
[ 0., 0., 0., 1., 0., 0.],
[ 0., 1., 0., 0., 0., 0.],
[ 1., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 1.]])
m.nonzero()
=> (array([0, 1, 2, 3, 4]), array([4, 3, 1, 0, 5]))
可以认为这是使用索引(0,4),然后是(1,3),然后是(2,1),(3,0),(4,5)。
当使用jOOQ的代码生成器时,它会拆分嵌套类以防止大型静态初始化器,而可能包含嵌套类,例如,... 我使用带有<代码> 但使用<代码> 这是jOOQ生成器中的错误吗?或者我需要添加其他配置
我正在编写一个通用组件,该组件封装了一个生成器并执行常规操作: 按键筛选 转换值 等等 为了尽可能接近地模拟包装生成器,如果生成器使用引用,我想使用引用。 当我尝试使用 构造的情况下迭代生成器对引用完全不起作用:
我正在编写一个通用组件,该组件封装了一个生成器并执行常规操作: 按键筛选 转换值 等等 为了尽可能接近地模拟包装生成器,如果生成器使用引用,我想使用引用。 当我尝试使用 构造的情况下迭代生成器对引用完全不起作用:
问题内容: 我正在尝试使用HashMap将唯一字符串映射到字符串ArrayList,如下所示: 基本上,我希望能够通过数字访问密钥,而不是使用密钥名称。我希望能够访问所述键的值,以对其进行迭代。我在想像这样的事情: 是否有捷径可寻? 问题答案: 您可以通过调用来遍历键,也可以通过调用来遍历项。遍历条目可能会更快。 如果要确保按插入键的顺序遍历键,请使用。 顺便说一句,我建议将地图的声明类型更改为。
我在一个现有的EMF项目中有一个Ecore模型,希望通过Xtend将所有包含类的名称打印到一个文本文件中。你是如何做到这一点的?XTend示例没有展示如何使用模型并从中获取信息。
问题内容: 我需要在maven pom.xml文件中设置一个属性,该属性应该是UUID。谁能告诉我 将属性设置为UUID的最佳方法是什么? 我正在使用启动gigaspaces的配置文件,并且gigaspaces需要组名, 想要唯一(uuid)。因此,在我的个人资料中,我想设置一个groupName属性值 每次构建都应更改。我自己写了一个UUIDGenerator插件,因为没有找到任何插件。 因此,