【发布时间】:2015-01-14 20:45:32
【问题描述】:
这似乎是一个非常简单的“帮我用谷歌搜索”之类的问题,但我似乎无法得到答案。如何使用类似于 Numpy 的 .shape 方法的命令在 Lua 中查找表的尺寸?
例如。 blah = '2 x 3 table'; blah.lua_equivalent_of_shape = {2,3}
【问题讨论】:
这似乎是一个非常简单的“帮我用谷歌搜索”之类的问题,但我似乎无法得到答案。如何使用类似于 Numpy 的 .shape 方法的命令在 Lua 中查找表的尺寸?
例如。 blah = '2 x 3 table'; blah.lua_equivalent_of_shape = {2,3}
【问题讨论】:
Lua 中的表是键值对的集合,没有维度。
您可以使用 Lua 表实现二维数组。在这种情况下,维度由#t x #t[1] 给出,如下例所示:
t={
{11,12,13},
{21,22,23},
}
print(#t,#t[1])
【讨论】:
Numpy 的数组在内存中是连续的,而 Lua 的表是哈希表,因此它们并不总是具有形状的概念。表可用于实现参差不齐的数组、集合、对象等。
话虽如此,要找到表的长度,t,使用索引 1..n 使用 #t
t = {1, 2, 3}
print(#t) -- prints 3
您可以实现一个对象,使其行为更像一个 numpy 数组并添加一个 shape 属性,或者在 C 中实现它并为 Lua 进行绑定。
t = {{1, 0}, {2, 3}, {3, 1}, shape={2, 2}}
print(t.shape[1], t.shape[2])
print("dims", #t.shape)
如果你真的想念 Numpy 的功能,你可以使用 torch.tensor 在 Lua 中获得类似 numpy 的高效功能。
【讨论】: