NickGnd
Best way to get the first n rows from a NX Tensor
Hey all, newbie here with a newbie question ![]()
I’m wondering what’s the easier way to get the first n rows from a multi-dimensional tensor.
For instance, If I have a 3 dimension tensor like this:
t = Nx.tensor([
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]
])
#Nx.Tensor<
s64[3][3]
[
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]
]
>
How can I get the first 2 rows? I mean [[0, 3, 6], [1, 4, 7]].
A simple solution is to transpose the tensor and then get the first 2 elements, like:
Nx.transpose(t)[0..1]
#Nx.Tensor<
s64[2][3]
[
[0, 3, 6],
[1, 4, 7]
]
>
But I was wondering if there is a more straightforward way to do that?
I’m asking because I have seen that with python (numpy) you can do that with array[0:2].
This is just a curiosity, is not based on any particular needs.
❯ python3
>>> import numpy as np
>>> x1 = [1, 2, 3]
>>> x2 = [4, 5, 6]
>>> x3 = [7, 8, 9]
>>> X = np.column_stack([x1, x2, x3])
>>> X
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9]])
>>> X[0:2]
array([[1, 4, 7],
[2, 5, 8]])
Thank you all in advance ![]()
Cheers ![]()
Marked As Solved
Aetherus
t = Nx.tensor([
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]
])
t
|> Nx.slice([0, 0], [3, 2]) # slice from index (0, 0) and take 3 and 2 elements respectively along each axis
|> Nx.transpose()
returns
#Nx.Tensor<
s64[2][3]
[
[0, 3, 6],
[1, 4, 7]
]
>
Also Liked
NickGnd
Ops. my fault. ![]()
I have just realized that the created tensor in Nx is different to the array created in numpy. I didn’t realize it before because the tensor that I used as example was 3x3, but if I use a not squared tensor (eg. 3x2) it is evident.
x = Nx.tensor([
[0, 1],
[2, 3],
[4, 5]
])
# let's get the shape
Nx.shape(x)
{3, 2}
Is not the same of:
import numpy as np
x1 = [0, 1]
x2 = [2, 3]
x3 = [4, 5]
X = np.column_stack([x1, x2, x3])
>>> X
array([[0, 2, 4],
[1, 3, 5]])
>>> X.shape
(2, 3)
Basically, I need to transpose the tensor in Elixir to have the equivalent of the numpy array:
x = Nx.tensor([
[0, 1],
[2, 3],
[4, 5]
])
# let's get the shape
Nx.shape(x)
{3, 2}
# and transpose it
Nx.transpose(x)
#Nx.Tensor<
s64[2][3]
[
[0, 2, 4],
[1, 3, 5]
]
>
![]()
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex









