Hello,

thanks for your reply which was really helpful!

My problem is that I discovered that the data I got is rather unordered.

The documentation for reshape says: Read the elements of a using this index 
order, and place the elements into the
reshaped array using this index order. ā€˜Cā€™ means to read / write the elements 
using C-like index order, with the last
axis index changing fastest, back to the first axis index changing slowest. ā€˜Fā€™ 
means to read / write the elements using
Fortran-like index order, with the first index changing fastest, and the last 
index changing slowest.

With my data both dimensions change, so there is no specific ordering of the 
points, just a bunch of arbitrarily mixed
"x y z value" data.

My idea is:

out = np.loadtxt(...)
x = np.unique(out[:,0])
y = np.unique[out]:,1])
xx, yy = np.meshgrid(x, y)

values = lookup(xx, yy, out)

lookup is ufunc (I hope that term is correct here) that looks up the value of 
every x and y in out, like
x_filtered = out[ out[:,0] == x, :]
y_filtered  = out[ out[:,1] == y, :]
return y_filtered[2]

(untested, just a sketch)

Would this work? Any better way?

Thanks,
Florian


Am 31.08.2016 um 17:06 schrieb Robert Kern:
> On Wed, Aug 31, 2016 at 4:00 PM, Florian Lindner <mailingli...@xgm.de 
> <mailto:mailingli...@xgm.de>> wrote:
>>
>> Hello,
>>
>> I have mesh (more exactly: just a bunch of nodes) description with values 
>> associated to the nodes in a file, e.g. for a
>> 3x3 mesh:
>>
>> 0   0   10
>> 0   0.3 11
>> 0   0.6 12
>> 0.3 0   20
>> 0.3 0.3 21
>> 0.3 0.6 22
>> 0.6 0   30
>> 0.6 0.3 31
>> 0.6 0.6 32
>>
>> What is best way to read it in and get data structures like the ones I get 
>> from np.meshgrid?
>>
>> Of course, I know about np.loadtxt, but I'm having trouble getting the 
>> resulting arrays (x, y, values) in the right form
>> and to retain association to the values.
> 
> For this particular case (known shape and ordering), this is what I would do. 
> Maybe throw in a .T or three depending on
> exactly how you want them to be laid out.
> 
> [~/scratch]
> |1> !cat mesh.txt
> 
> 0   0   10
> 0   0.3 11
> 0   0.6 12
> 0.3 0   20
> 0.3 0.3 21
> 0.3 0.6 22
> 0.6 0   30
> 0.6 0.3 31
> 0.6 0.6 32
> 
> [~/scratch]
> |2> nodes = np.loadtxt('mesh.txt')
> 
> [~/scratch]
> |3> nodes
> array([[  0. ,   0. ,  10. ],
>        [  0. ,   0.3,  11. ],
>        [  0. ,   0.6,  12. ],
>        [  0.3,   0. ,  20. ],
>        [  0.3,   0.3,  21. ],
>        [  0.3,   0.6,  22. ],
>        [  0.6,   0. ,  30. ],
>        [  0.6,   0.3,  31. ],
>        [  0.6,   0.6,  32. ]])
> 
> [~/scratch]
> |4> reshaped = nodes.reshape((3, 3, -1))
> 
> [~/scratch]
> |5> reshaped
> array([[[  0. ,   0. ,  10. ],
>         [  0. ,   0.3,  11. ],
>         [  0. ,   0.6,  12. ]],
> 
>        [[  0.3,   0. ,  20. ],
>         [  0.3,   0.3,  21. ],
>         [  0.3,   0.6,  22. ]],
> 
>        [[  0.6,   0. ,  30. ],
>         [  0.6,   0.3,  31. ],
>         [  0.6,   0.6,  32. ]]])
> 
> [~/scratch]
> |7> x = reshaped[..., 0]
> 
> [~/scratch]
> |8> y = reshaped[..., 1]
> 
> [~/scratch]
> |9> values = reshaped[..., 2]
> 
> [~/scratch]
> |10> x
> array([[ 0. ,  0. ,  0. ],
>        [ 0.3,  0.3,  0.3],
>        [ 0.6,  0.6,  0.6]])
> 
> [~/scratch]
> |11> y
> array([[ 0. ,  0.3,  0.6],
>        [ 0. ,  0.3,  0.6],
>        [ 0. ,  0.3,  0.6]])
> 
> [~/scratch]
> |12> values
> array([[ 10.,  11.,  12.],
>        [ 20.,  21.,  22.],
>        [ 30.,  31.,  32.]])
> 
> --
> Robert Kern
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
> 
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to