回答編集履歴

2

edit

2018/05/23 21:50

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -1,3 +1,87 @@
1
+ ```fortran
2
+
3
+ program test
4
+
5
+ implicit none
6
+
7
+ real(4),dimension(1:10, 1:10, 1:3) :: u=0d0
8
+
9
+ integer :: i,j,k,m
10
+
11
+ open(11, file='test.dat', form='unformatted')
12
+
13
+ do m=1,20
14
+
15
+ do i=1,10
16
+
17
+ do j=1,10
18
+
19
+ u(i,j,1) = 1
20
+
21
+ u(i,j,2) = 2
22
+
23
+ u(i,j,3) = 3
24
+
25
+ enddo
26
+
27
+ enddo
28
+
29
+ write(11) (((u(i,j,k), i=1,10), j=1,10), k=1,3)
30
+
31
+ end do
32
+
33
+ return
34
+
35
+ end program test
36
+
37
+ ```
38
+
39
+
40
+
41
+ ```python
42
+
43
+ import numpy as np
44
+
45
+ from scipy.io import FortranFile
46
+
47
+
48
+
49
+ im = 10
50
+
51
+ jm = 10
52
+
53
+ nstep = 10
54
+
55
+
56
+
57
+ f90 = open('test.dat', 'rb')
58
+
59
+ ary = np.fromfile(f90, np.float32, count=nstep*im*jm*3)
60
+
61
+
62
+
63
+ uvhpy = ary.reshape(im, jm, 3, 10, order='F') # byte×202*481*3=4×291486=1165944
64
+
65
+ print(uvhpy[:, :, 2, 0])
66
+
67
+
68
+
69
+ #----------OR----------
70
+
71
+ #uvhpy = ary.reshape(10, 3, jm, im) # byte×202*481*3=4×291486=1165944
72
+
73
+ #print(uvhpy[0, 2, :, :])
74
+
75
+ ```
76
+
77
+
78
+
79
+
80
+
81
+ ---
82
+
83
+
84
+
1
85
  ~~事前に.transpose(0,1,3,2)を入れてみてはいかがですか?
2
86
 
3
87
  for文で抽出する際のnumpy.arrayの次元を疑っています。

1

edit

2018/05/23 21:49

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -1,7 +1,21 @@
1
- 事前に.transpose(0,1,3,2)を入れてみてはいかがですか?
1
+ ~~事前に.transpose(0,1,3,2)を入れてみてはいかがですか?
2
2
 
3
3
  for文で抽出する際のnumpy.arrayの次元を疑っています。
4
4
 
5
+ shapeが(n,1)になっていませんか?~~
5
6
 
6
7
 
8
+
9
+ ---
10
+
11
+
12
+
7
- shapeが(n,1)になってませんか?
13
+ 手元でやってみたところ、再現しませんでした。
14
+
15
+ `uvhpy = ary.reshape(jm,im,3,20)#, order='F')`
16
+
17
+ ではなく、
18
+
19
+ `uvhpy = ary.reshape(jm,im,3,20, order='F')`
20
+
21
+ で正しかったのでは?