Black
Black

Reputation: 4644

Lua: Dimensions of a table

This seems like a really easy, "google it for me" kind of question but I can't seem to get an answer to it. How do I find the dimensions of a table in Lua using a command similar to Numpy's .shape method? E.g. blah = '2 x 3 table'; blah.lua_equivalent_of_shape = {2,3}

Upvotes: 2

Views: 1522

Answers (2)

ryanpattison
ryanpattison

Reputation: 6251

Numpy's arrays are contiguous in memory and Lua's tables are Hashes so they don't always have the notion of a shape. Tables can be used to implement ragged arrays, sets, objects, etc.

That being said, to find the length of a table, t, using indices 1..n use #t

t = {1, 2, 3}
print(#t) -- prints 3

You could implement an object to behave more like a numpy array and add a shape attribute, or implement it in C and make bindings for Lua.

t = {{1, 0}, {2, 3}, {3, 1}, shape={2, 2}}
print(t.shape[1], t.shape[2])
print("dims", #t.shape)

If you really miss Numpy's functionality you can use use torch.tensor for efficient numpy like functionality in Lua.

Upvotes: 0

lhf
lhf

Reputation: 72312

Tables in Lua are sets of key-value pairs and do not have dimensions.

You can implement 2d-arrays with Lua tables. In this case, the dimension is given by #t x #t[1], as in the example below:

t={
{11,12,13},
{21,22,23},
}
print(#t,#t[1])

Upvotes: 2

Related Questions