エクセルからデータをDreampieに貼っつけてリストにする
追記)後々もう少しスマートな解決法に挑戦しました。
エクセルからデータをDreampieに貼っつけて統計検定できたらいいなぁとおもったんだけど、カンマ区切りを手で入れないといけないのが気になる。MATLABだったら、コンソールにa=[]と書いてからカーソルをカッコのなかにいれてCtrl+Vではっつければ簡単なんだけどDreampieではおんなじ感じにはできない。csvファイルにしてしまえば標準のcsvモジュールが使えて簡単だけども中間ファイルをつくるその一手間を避けるために10倍の時間をかけてでも、楽をする方法をさがすべき。あと10回つかったらもとをとれる。そうだそうだ。
ぐぐってもあまり、解決策がない、iPythonでPyReadlineがあるとスマートペーストとかあってできるらしいが、DreampieをWin32で使いたいので、自力でがんばってローテクでとりあえず解決。DreampieでPyreadlineを使えたら一番いいんだが、そっちはめんどそうなので挫折。
4.24
2.91
-0.22
みたいなデータがあるとして
Dreampieの入力窓に
a=''''''
と書き、6つあるクォーテーションマークの真ん中にデータをコピペする。
いきなり[]でリストにしようとしてもだめなので、トリプルクォーテーションをつかってデータを整形積みテキストとしていれてしまうのが味噌じゃ。
あとは
a.splitlines()
で改行ごとに要素として扱うように変換すればリストになる。これではまだ文字列なので、どうせscipyのstatを使うのでNumpyにしてしまって
import numpy as np
してから
b = np.array(a.splitlines(), dtype=np.float)
これでbには文字列データのリストだったaがフロートになって変換されたNumpy arrayになる。dtypeは適時に変えてください。
もっとスマートな方法がありそうだが、とりあえずcsvの中間ファイルなしでできた。
問題はデータがカラム一列ならこれでOKだが、複数のカラムになるとこれは破綻する。2列くらいしかなければ一列ならづつやればいいんだが、増えてくると問題。
もっといい方法があるはずだとは思うけどpythonでのstringの扱いにあまり慣れてないためあまり鮮やかではないチカラ技のモジュールをつくってC:\Python26\libにおいてimportして使うことにした。
import numpy as npdef string2np(string, dtype=np.float32):
'''
Simple multiple column csv data parser into numpy array
Accept only formatted text, not file or file-like object.
If any, trading and leading \n will be eliminated.
'''
string = string.lstrip('\n')
string = string.rstrip('\n')
raw = string.count('\n') + 1
b = string.split('\n')
col = b[0].count('\t') + 1
c = [str.split('\t') for str in b]
d = np.zeros((raw, col), dtype=dtype)
for y in range(raw):
for x in range(col):
d[y, x] = c[y][x]
return np.array(d, dtype=dtype)if __name__ == '__main__':
a='\n4.24\t10\n2.91\t9\n-0.22\t8\n'
print a
b = string2np(a, np.float64)
print b
« ゲームセンター嵐によるPythonで統計検定できるウェブサイト | トップページ | My Blackberry Is Not Working! - The One Ronnie 聞き取ってみる »
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
« ゲームセンター嵐によるPythonで統計検定できるウェブサイト | トップページ | My Blackberry Is Not Working! - The One Ronnie 聞き取ってみる »
コメント