
On Wed, Aug 31, 2016 at 4:00 PM, Florian Lindner mailinglists@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