Pythonのお勉強 Part57

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/06/25(月) 09:57:59.24ID:aY7uj4w5
Pythonオフィシャルサイト
http://www.python.org/

■前スレ
Pythonのお勉強 Part56
http://mevius.5ch.net/test/read.cgi/tech/1519430841/

次スレは>>980が挑戦する

ソース貼れるサイト
https://pastebin.com/ ペーストビン
https://ja.osdn.net/pastebin/ OSDNコピペ ログインしないで投稿すると一週間で自動削除
2018/09/20(木) 00:24:06.57ID:iQSEA3+z
一文字目以外に付けるプレフィックスを見たことがない
2018/09/20(木) 11:56:12.26ID:HAOX7ffW
masterがMでslaveがSという矛盾
626デフォルトの名無しさん
垢版 |
2018/09/20(木) 12:23:21.32ID:7WHuQIEO
>>623
ファミコンのROMだっけ
627デフォルトの名無しさん
垢版 |
2018/09/20(木) 12:25:58.30ID:7WHuQIEO
>>624
前にくっつくのがプレフィックスで、後ろにくっつくのがサフィックスです。
中間にくっつけるのは何て言うのか知らんけど。
そもそも中間に付けてしまうと元が何だったのかまで判らなくなるからな。
2018/09/20(木) 14:12:18.08ID:2iENFSTM
>>625
はあ?召使いに罵られる方がいいに決まってるだろ
2018/09/20(木) 16:17:33.15ID:T12P3hPI
>>625
英語圏だとSMはサドマゾではなくスレイブとマスターの頭文字と聞いたから矛盾では無いな
630デフォルトの名無しさん
垢版 |
2018/09/20(木) 17:56:05.85ID:gNXIg40P
なら、国外でMicrosoft社をMSなどの略せないのか
631デフォルトの名無しさん
垢版 |
2018/09/20(木) 18:00:21.18ID:X/cZTSMm
MSPythonの悪夢
632デフォルトの名無しさん
垢版 |
2018/09/21(金) 00:06:32.02ID:pqvLKmnN
WindowsでRuby開発は難しいらしいけど、
Pythonも難しいの?ましなほう?
2018/09/21(金) 00:37:40.96ID:3UUW0PhR
公式インストーラーでインストールして仮想環境作ってpipで欲しいライブラリ入れるだけ
windowsでも普通に動く
634デフォルトの名無しさん
垢版 |
2018/09/21(金) 01:33:15.67ID:9xBQcUDg
Windowsならanacondaなのでは
635デフォルトの名無しさん
垢版 |
2018/09/21(金) 07:06:58.13ID:y+ZygFeU
Visual Studioインストールすると付いてくる
2018/09/21(金) 07:07:53.25ID:m+XjGsJo
anacondaのライブラリの9割ぐらいは結局使わないから必要なものだけ入れた環境作った方がいい
2018/09/21(金) 13:13:45.04ID:5XrzjM4h
32G のSSD とかツラいですね!
638デフォルトの名無しさん
垢版 |
2018/09/21(金) 15:59:46.16ID:0sGW7LbN
Dataframe(Series)で、
m f
0 0 0
1 0 0
2 0 0
3 1 1
4 0 1
5 0 1
6 1 2
7 0 2
8 0 2
9 1 3
10 0 3
11 0 3

df['m']があったとして、df['f']を作る方法が分からない。
分かる人教えて下さいm(_ _)m
639こっちが見やすいかな^^;
垢版 |
2018/09/21(金) 16:09:21.00ID:0sGW7LbN
Dataframe(Series)で、
index m f
0 0 0
1 0 0
2 0 0
3 1 1
4 0 1
5 0 1
6 1 2
7 0 2
8 0 2
9 1 3
10 0 3
11 0 3

df['m']があったとして、df['f']を作る方法が分からない。
分かる人教えて下さいm(_ _)m
640デフォルトの名無しさん
垢版 |
2018/09/21(金) 17:06:22.53ID:Y+zsC6wW
>>639
cumsumで累積和が取れる
df[“f”]=df[“m”].cumsum()
641デフォルトの名無しさん
垢版 |
2018/09/21(金) 17:21:03.87ID:0sGW7LbN
>>640
ありがとうございます!
今まで、リストに変換して、for文で足して、
Dataframeにしていたので、
1行ですんで助かります(^ ^)
642デフォルトの名無しさん
垢版 |
2018/09/21(金) 21:26:08.14ID:0sGW7LbN
python のdataframe型の値を、
bokehのCustomJSのcode="""    """)内で、
strinng型にする方法はありますか?

callback = CustomJS(args=dict(source=source), code="""
var dc = source.data;
var aaa = dc['time'][100].toTimeString();
""")

ではうまくいきません。
aaaをstringにしたいのですが。。。
643デフォルトの名無しさん
垢版 |
2018/09/22(土) 13:35:45.41ID:xOVRbYWf
>>636
ほんそれ
644デフォルトの名無しさん
垢版 |
2018/09/22(土) 13:37:58.85ID:xOVRbYWf
callback = CustomJS(args=dict(source=source), code=f"""
var dc = source.data;
var aaa = "{dc['time'][100].toTimeString()}";
""")
2018/09/22(土) 18:21:30.87ID:kxpMytAb
関係ないけどbokehって言葉、日本語のボケ(写真のボケ)から来てるんだよな
なぜか英語でも使われるようになった。そのうち5ch用語も英語になったりして
2018/09/22(土) 18:51:13.64ID:c//Edh7F
つ pedobear
(どこかで間違った例)
2018/09/22(土) 19:13:35.99ID:kxpMytAb
あーそっか、クマーね
648642
垢版 |
2018/09/22(土) 19:20:13.84ID:AGvc1ug8
>>644
うまくいきません(泣)
649デフォルトの名無しさん
垢版 |
2018/09/22(土) 22:01:16.41ID:NU3AjVzo
python on rails まだ?
2018/09/23(日) 04:17:15.27ID:Dlc37gvN
Windowsでテキストファイルの末尾をちょっと確認したくて
LinuxのtailコマンドのようなものをPythonで作ろうと思い立ち
以下のロジックで組みました
・すべての行をリストに取り込む
・len()でリストの要素数を把握し、添え字で末尾から指定分の要素を参照して表示

しかしこれだとファイルが巨大な場合、HDDが長時間ガリガリ言って使い物になりません
メモリを食いつぶさない良い方法があれば教えてください
2018/09/23(日) 05:09:58.45ID:Q3ubKv7d
>>650
f.seek(-10, 2)でファイル末尾から10バイト目に移動して f.read(1) とかする。f はファイルオブジェクト
652デフォルトの名無しさん
垢版 |
2018/09/23(日) 05:38:06.43ID:s92HkKLC
>>650
俺はpythonわかんないのでpythonでの書き方がどうなるかはわからないが、要するに最後の10行とかが最終的にバッファにあれば良いだけだよね。ならばその行数だけのバッファがあれば良い。
一行読んでバッファに入れてというのの繰り返しになるが、バッファに既に限界まで入っているなら最初の行を捨ててからバッファに入れる。という風に作っておいて、全行読み切ったら最後にバッファの内容を全て出力すると。
2018/09/23(日) 06:50:30.15ID:03hgUEHk
ファイルの一括読み込みではなくて、動画みたいに、Stream で読み込めないのか?
例えば1行ずつとか、バッファサイズ分だけ読み込んで、処理したら、即捨てるやり方。
つまり、今処理している部分しか、メモリに置いていないやり方

一括読み込みでは、ファイル全体がメモリ中にあるから、大きいファイルの場合に困る
2018/09/23(日) 07:12:59.20ID:0t7nPFgm
>>653>>652
2018/09/23(日) 07:49:15.42ID:DRJDPnqn
653→652→651
2018/09/23(日) 08:25:58.48ID:Q3ubKv7d
何でシーケンシャルアクセス(ファイルの先頭からアクセスすること)が前提になってるの?この場合は末尾ってわかってるんだからseekでランダムアクセス(任意の位置からアクセス)すればいいと思うけど。
2018/09/23(日) 09:24:50.44ID:0t7nPFgm
テキストファイルの最後の10バイトじゃなくて最後の10行を見たいからじゃね
2018/09/23(日) 09:57:58.34ID:A0stA7Ax
末尾4kb読み込んで後ろから解析、10行分に満たなければさらに手前の4kbを読み込んで、とやっていけばいいのかも。
659デフォルトの名無しさん
垢版 |
2018/09/23(日) 11:39:33.61ID:x0iYh9VU
seekで下からアクセスするとして
結局改行が見つからずにファイル冒頭まで読むハメに
2018/09/23(日) 13:16:33.94ID:s92HkKLC
>>659
間違えてバイナリファイルを開いちゃうと起こり得る事だな。
テキストファイルでも改行が LF ではないとかの理由で起こる事はあるが。
661デフォルトの名無しさん
垢版 |
2018/09/23(日) 15:03:53.47ID:0vXeudiz
だからなんやねんw
2018/09/23(日) 16:01:10.21ID:N5zXr15R
seek使わないとしたら何が良いんだろう?
663デフォルトの名無しさん
垢版 |
2018/09/23(日) 16:14:56.32ID:x0iYh9VU
reversed iterator を file object に対して使う
2018/09/23(日) 17:00:59.87ID:sCu1FgB/
ファイルをSSDかRAMディスクに移動させてから全体read
665デフォルトの名無しさん
垢版 |
2018/09/23(日) 17:05:32.45ID:0vXeudiz
>>662
seek使わないとしたら全部悪手やてw
2018/09/23(日) 17:12:29.31ID:D4/zD5nR
Debian 9.5のpip3 9.0.1で
$ pip3 list --outdated
とやると
Exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/lib/python3/dist-packages/pip/commands/list.py", line 157, in run
packages = self.get_outdated(packages, options)
File "/usr/lib/python3/dist-packages/pip/commands/list.py", line 168, in get_outdated
dist for dist in self.iter_packages_latest_infos(packages, options)
File "/usr/lib/python3/dist-packages/pip/commands/list.py", line 169, in <listcomp>
if dist.latest_version > dist.parsed_version
TypeError: unorderable types: Version() > SetuptoolsVersion()
というエラーが出て異常終了します。
Versionが合わないとかそういうのかなと予想しましたが、どなたか解決策などご存知ないでしょうか。
2018/09/23(日) 17:59:26.11ID:HoLaxE9h
>>666
このへんとかどうですか
https://note.mu/junf/n/n0e460749fe66
2018/09/23(日) 18:26:28.00ID:N5zXr15R
>>665
なんだ、ありがとう

でもよく見ると>>650は readlines()使ってたりして
sum(1 for line in open('file.txt'))にするだけでも
違いそう
2018/09/23(日) 20:37:38.86ID:x1nG8zq1
Cookbook 3rd 見たら出てた
ドキュメントにもそのまんまがあったよ
https://docs.python.jp/3/library/collections.html#collections.deque

deque は Unix における tail フィルタに相当する機能を提供します:

def tail(filename, n=10):
'Return the last n lines of a file'
with open(filename) as f:
return deque(f, n)
2018/09/23(日) 20:48:53.85ID:Q3ubKv7d
>>669
簡潔でいいね!でもこれメモリに全部読み込むんじゃないかな?
2018/09/23(日) 23:05:04.77ID:x1nG8zq1
頭から1行づつ詰め込んでいって指定数超えると
一個消して一個追加しているみたいでメモリは問題ないけど
巨大なファイルならやっぱseekは必要だね
2018/09/23(日) 23:36:51.92ID:0t7nPFgm
>>670
読み込む度にmaxlenを超えた分は捨てるから結果として全部読み込むけどメモリーはそれほど要らない
2018/09/24(月) 09:26:05.62ID:ak0QJTbF
>>671
>>672
なるほど、メモリの問題はクリアしてるんですね。でもやはりシーケンシャルアクセスなので、計算量O(1)で解ける問題をO(N)で解こうとするのは違和感があるかな(自分には)。

最近はO(N)くらいなら気にしなくてもいいという風潮なのかな?
2018/09/24(月) 09:30:43.08ID:yFnU/yKn
数学が得意じゃ無いとPythonは難しいですか?
AIに興味があります
AIで妹を作りたいです
2018/09/24(月) 09:40:20.38ID:ZY+9VQ3P
>>673
最近も昔も、それに要する時間が許容できる時間を下回るならokということだよ。
計算量のオーダーだけでなく、具体的に実際にかかる時間はどうなの?
2018/09/24(月) 09:45:07.20ID:E4VB1fuR
>>673
単に>>670に答えただけ
あとseek使うにしても>>658みたいなことをしないと駄目だからO(1)と言うのはちょっと違和感ある
677デフォルトの名無しさん
垢版 |
2018/09/24(月) 09:50:07.80ID:UOx+eYoH
>>676
仮に全体が一行の巨大なテキストやとしたらO(1/N)やぞw
2018/09/24(月) 10:05:49.07ID:KHvr4x1U
あの、そのOって何ですか?
2018/09/24(月) 10:15:53.29ID:E4VB1fuR
>>677
ごめん、何が面白いのかさっぱりわからん
680デフォルトの名無しさん
垢版 |
2018/09/24(月) 12:24:12.81ID:gaTHdjrg
>>674
中国軍に入れ
日本と共同研究させてもらえるぞ
681デフォルトの名無しさん
垢版 |
2018/09/24(月) 12:25:37.21ID:gaTHdjrg
>>678
行ってらっしゃい
https://mevius.5ch.net/test/read.cgi/tech/1363854937/
2018/09/24(月) 15:47:35.24ID:DNs+Nta1
高校数学の基礎すらよく分からないのですが、PythonでAI作れますか?
2018/09/24(月) 15:53:15.60ID:QjVDfSuK
>>682
人生の初心者板へ(・∀・)カエレ!!
684デフォルトの名無しさん
垢版 |
2018/09/24(月) 15:55:35.49ID:kBpC5qFw
>>682
keras使えば余裕
層重ねてパラメータ決めるだけだから
685デフォルトの名無しさん
垢版 |
2018/09/24(月) 16:13:53.94ID:78Kd7/z8
みんなのpython終わったばかりの初心者ですが画像認証はオライリーの本でいいですか?
686533,549
垢版 |
2018/09/24(月) 16:41:34.28ID:wl8oyq4e
層決めるのってどうやって決めるの?
687デフォルトの名無しさん
垢版 |
2018/09/24(月) 16:52:49.83ID:kBpC5qFw
>>686
2018/09/24(月) 16:57:55.21ID:fSXj5PQF
勘なのか…
何か凄い計算とか必要なのかと思って敬遠してたわ…
2018/09/24(月) 17:30:24.84ID:wHG2Z2Xv
courseraの機械学習コースではニューラルネットに関しては隠れ層の数は基本的に1つで十分
隠れ層のユニット数は入力と同じ〜数倍程度で十分と言っていた
特に明確に数式とかでは説明されていなかった気がする
690デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:34:10.52ID:Kttr1loZ
>>688
しらみつぶし&総当たり最強
691デフォルトの名無しさん
垢版 |
2018/09/24(月) 18:07:27.03ID:G1aPepRn
>>686
最適な決め方を与える理論は現状ない
692デフォルトの名無しさん
垢版 |
2018/09/24(月) 19:17:05.17ID:5zI+X6hO
>>679
面白さやなく計算量がわからんのやろw素直にそう言えばええやんw
2018/09/24(月) 19:32:49.93ID:1deJaFMg
https://github.com/pypa/pip/issues/3057#issuecomment-360289938
2018/09/24(月) 19:35:55.35ID:E4VB1fuR
>>692
マジで言ってるのか、引っ込みつかなくなったのかはっきりしてくれ w
2018/09/24(月) 19:43:02.05ID:QjVDfSuK
>>692
ばかやろうはっけん
2018/09/24(月) 19:50:49.24ID:rB4zdy0A
そいつちょっと前から多数のスレでちょっかい出して回ってる半角単芝ガイジだからスルーしといて
697デフォルトの名無しさん
垢版 |
2018/09/24(月) 20:20:59.54ID:5zI+X6hO
>>694
引っ込みつかんのはおまえやろwムリすんなw
2018/09/24(月) 20:27:00.26ID:E4VB1fuR
>>696
了解
粘着してるみたいだし、本人渾身のギャグだったんだろうな w
699デフォルトの名無しさん
垢版 |
2018/09/24(月) 20:39:57.32ID:5zI+X6hO
バカなりに羞恥心が芽生えた模様wwwww
2018/09/24(月) 21:07:59.42ID:Jm8gnfdF
別人ですアピールはわかったからやめろ
2018/09/24(月) 21:09:22.05ID:Jm8gnfdF
そもそもマッチポンプでスレ荒らすな
2018/09/24(月) 22:04:05.21ID:cIWp1XlU
seek はバイナリファイルだから、100 バイト目とか、位置指定。
メモリ位置は、計算で求まるから、計算量O(1)

テキストファイルは改行区切りだから、ファイルの先頭から、改行を探して数える必要があるから、O(N)

例えば、100, 200 バイト目に改行があるって、
あらかじめ改行の位置がわからないし、記録されていない

別のファイルに、改行の位置を記録しておけばよいかも。
JavaScript などのデバッグで使う、map ファイルみたいに
703デフォルトの名無しさん
垢版 |
2018/09/24(月) 23:32:04.34ID:prONdPba
なんで、無理にPython使うの?
tailコマンドの出力を受け取った方がよくない?
別にiOSやandroid上で実行させようとしてるわけじゃないんだから
実行速度だって、インタプリタのPythonよりtailコマンドの方が速いでしょ
2018/09/24(月) 23:54:27.34ID:6BZT0Izm
初心者のうちはなぜか外部プロセス使うのダサいみたいな謎の観念があるよね
気持ちはよくわかる
705デフォルトの名無しさん
垢版 |
2018/09/25(火) 00:11:47.38ID:TRjFEstL
もともと>>650はwindowsでやりたいんじゃなかったっけ
2018/09/25(火) 00:59:42.18ID:lmrEE7TE
pip3のlistサブコマンドのオプションに--userがあるけど
この反対の挙動をする--systemみたいなオプションってあります?
つまりpip3 list --systemとするとSystem Wideにインストールされたパッケージ一覧が表示されるという。
2018/09/25(火) 04:09:12.66ID:2LNh8puL
650です
いろいろアドバイスいただきありがとうございました
シークを使ったファイル処理には疎いもので、dequeを使うやり方でやってみます
Windowsにtailコマンドがあれば良かったんですが・・・
2018/09/25(火) 06:18:39.51ID:i2UBaUuH
Ruby では、tail -f の機能の、file-tail というgem を、誰かが作っている

たぶん、Python でも、誰かが作っているのでは?
2018/09/25(火) 07:22:34.22ID:3aZELiV7
winならpowershellでできる
2018/09/25(火) 07:44:49.84ID:gMTB0szq
>>707
とりあえずseek使ったtailの最低限の実装はこんなの。必要ならバッファが足りなかったら増やす処理やエラー処理を追加してね。

def tail(filename, n=10, buf_size=4096):
 with open(filename, mode='rb') as f:
  file_size = f.seek(0, 2)
  buf_size = buf_size if buf_size < file_size else file_size
  assert f.seek(-buf_size, 2) == file_size - buf_size
  for line in f.read(buf_size).decode('utf-8').split('\n')[-n-1:-1]:
   print(line)
711デフォルトの名無しさん
垢版 |
2018/09/25(火) 11:45:24.91ID:Ldj267OX
>>707
msys入れろ
712デフォルトの名無しさん
垢版 |
2018/09/25(火) 11:51:11.07ID:Ldj267OX
>>707
追記
msys は丸ごとダウンロードして来なくても
git for windows を入れると入ってくる
msys-git とか git bash で充分
マなら git くらい入れとけ
ちなみに utf-8 のファイルも直接読めて快適だ
2018/09/25(火) 12:36:00.27ID:PFutBlHm
今ならWSLでいいだろ
714デフォルトの名無しさん
垢版 |
2018/09/25(火) 12:56:32.28ID:b0qq2JBy
>>707
Power Shell 3.0で
Get-Content ファイル名 -wait -tail 行数
がtailコマンドと同じことやってくれるよ
715デフォルトの名無しさん
垢版 |
2018/09/25(火) 13:51:57.50ID:O6wzDQwM
tail -f が欲しい
2018/09/25(火) 20:58:37.68ID:Aqu5iNCA
>>715
>>714でいいだろ
717デフォルトの名無しさん
垢版 |
2018/09/25(火) 22:24:29.91ID:3QVoU2wO
なんでMicrosoftは独自色出したんだろ
差別化したいんかね
タイプ回数増えて面倒
負担少ないキーボード買わせる腹積もりか?!
2018/09/25(火) 23:24:40.46ID:i2UBaUuH
Get-Content のalias として、cat が使える

入力補完があるから、長くてもよいけど
2018/09/25(火) 23:30:35.52ID:VV+8on31
>>717
gc -w{tab} ファイル名
※ {tab}はタブキー
でいけるのでtail -fよりタイプ数は少ないよ
720デフォルトの名無しさん
垢版 |
2018/09/26(水) 00:20:31.60ID:LxuK4GwM
ガベージコレクタじゃないのか・・
2018/09/26(水) 00:25:56.17ID:hmFn4mc7
本立ち読みしたけどなんか数学的すぎて訳わからん
CとかJavaみたいな文系で高校数学もアヒャヒャな俺でも理解できる言語とは違うんだな
722デフォルトの名無しさん
垢版 |
2018/09/26(水) 00:42:26.52ID:ZP32HEFJ
>>721
LLはサッサとやりたことを片付けるために作られてるから
ライブラリを使うとこだけコピペして使うとこから始めると
だんだん感覚に慣れていくと思う
Haskellとかもっとわけわからんぞw
2018/09/26(水) 00:47:07.34ID:WQTU7aa+
LLってなんですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況