- くだすれPython(超初心者用) その27©2ch.net
64 :デフォルトの名無しさん[sage]:2015/09/12(土) 09:55:20.42 ID:J6pfiWXJ - >>60
>>> import numpy as np >>> a = np.mgrid[0:4,0:5,0:6] >>> a.shape (3,4,5,6) >>> b = [x for z in a for y in z for x in y] >>> len(b) 60 >>> b[0].shape (6,) となりまして、望む結果は得られませんでした。
| - くだすれPython(超初心者用) その27©2ch.net
65 :デフォルトの名無しさん[sage]:2015/09/12(土) 10:06:26.07 ID:J6pfiWXJ - >>> b.shape
(3,4,5,6) >>> b = [a[:,i,j,k] for i in range(a.shape[1]) for j in range(a.shape[2]) for k in range(a.shape[3]) ] これでとりあえず望んだ結果が得られました。 これと等価な結果が得られるコードをもっとシンプルで高速に書けませんか?
| - くだすれPython(超初心者用) その27©2ch.net
67 :デフォルトの名無しさん[sage]:2015/09/12(土) 22:44:40.18 ID:J6pfiWXJ - >>66
実際は b = [ myfunc(a[:,i,j,k]) for i in range(a.shape[1]) for j in range(a.shape[2]) for k in range(a.shape[3])] という処理をやりたいんです。 次にようなループはpythonでは遅いと評判ですので、 内包表記だと速いと聞いて試したいと考えています。 for k in range(a.shape[3]): for j in range(a.shape[2]): for i in range(a.shape[1]): b.append(myfunc(a[:,i,j,k]))
|
|