くだすれPython(超初心者用) その40
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず ☆Ruby等、Pythonではないプログラミング言語での回答を書くことも禁ず このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line/OS)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その39 http://mevius.5ch.net/test/read.cgi/tech/1535064635/ ◆PythonのHome Page http://www.python.org/ ◆まとめwiki ttp://python.rdy.jp/ ◆ソースコードをそのまま5ちゃんにコピペするとインデントが崩れるので こういうところ↓にはってきてください ttp://ideone.com/ Pythonするにはぷち手間あるのがめんどうかなぁ ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数を長めに指定しる。 ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#) −−−−天麩羅ここまで−−−− >>671 思いっきり間違ってたので既に回答が>>685 にあるけど 自分のやり方を残そう mask = hoge.sum(axis=2) != 0 mask = np.array([mask, mask, mask]).transpose(1, 2, 0) org[mask] = hoge[mask] >>692 if not any(a): print(“空だよ!”) >>693 また間違えていた 一行目は>>685 のがいいね 足して0になるケースを考えてなかった 一日分のデータを記録するのにrowを一つのインスタンスにして colをそのインスタンス変数にするのはアリですか? >>697 状況がよく分からないので適切なアドバイスは難しいけど、rowに日付、colに属性はよくある実装 colにインスタンス変数を、という表現は聞きなれない言い回しなので、何のことだか戸惑った クラスを作って csvでいう1行を一つのインスタンスにして 列に当たる項目をそのクラスのオブジェクトのインスタンス変数として記録したいんです >>699 記録することと、記録されたものをどう使うかは分けて考えないとダメだよ 例えばセンサーから温度と湿度の出力があるとする これを一旦csvに落として、一列目に日付を、二列目に温度、三列目に湿度を入れるのはおかしい事ですか?と聞かれたら、全くおかしくない、普通です csvに落とさず、インスタンス作って管理するけどおかしい?と聞かれたら、まあ、いいんじゃないと答える csvに落とさず、インスタンス作って管理するけど、rowをインスタンスに、colに温度と湿度いれるのはおかしい?と言われたら、え?何したいの?O/Rマッパ?シリアライズ?それとも2次元のリストにインスタンス突っ込むの?え?え?となる LINEにてBotの作成をしております。そこでどうすればLINEとBot(鯖)間での応答速度を上げることができるのでしょうか? 現在、東京にサーバーがあり海外のVPSレンタルサーバーを使用しています。 OSはCentOS7で使用言語はPythonです。 下記のような記述で速度を測ってみたところ現在は0.03~0.006秒でした。 start = time.time() client.sendMessage(msg.to , "Progress...") elapsed_time = time.time() - start client.sendMessage(msg.to , "%sseconds" % (elapsed_time)) 応答速度、処理速度を向上させることにおいてのポイント点を教えていただきたいです。 >>701 高負荷かけてボトルネックを調査しよう ハードウェア、ソフトウェア、ネットワーク、どこに問題があるのか ハードウェアならCPU、メモリ、OS、ディスクIO、仮装環境プラットフォーム等 ソフトウェアはライブラリの実装 ネットワークはping打つなど 何十並列のときに重いならロードバランサ入れるとか それだけシンプルなコードで速度上げるってのもかなりの難題だね >>700 なるほど入れるのはいいけどその後どうするかということですね picle化するとか 結局csvに保存するにしても一日分のデータの出処が複数のセンサーだったりサイトだったりして後からcsvを編集するのも大変かなと思いました、 一度オブジェクトにまとめて一日分のデータが揃ったところでcsvに書き込むとか良いかなと考えました つまりORMはrowごとにオブジェクトになってるんすかね、 >>703 センサーの記録はセンサー単位で生データを記録する方がいいよ 加工しながら記録すると集める部分にバグがあったときに古いデータが全損になる 保存されたデータを後からマージ処理をする手間は発生する 複数のセンサーのサンプリングタイミングは同じとは限らないので時間でリサンプリングすることになる サイズが大きいならRDB使うし、小さくて良いならpandasをつかう リアルタイム性が必要な場合は、後解析用に記録するプログラムと、リアルタイム処理で分離する >>704 記録と保存は分けてやるんですね、生データも保存すると、 マージというのはSQLのMARGE文でやるんですかね具体的なサイトとか参考文献みたいなのありますか? >>705 規模にもよるけど最近はPCの性能が上がっているので大抵のことはpandasで足りることが多いです リサンプリングもpythonで一行 データフレームのマージも一行 RDBを使うときは割と明確で、ウェブサービスと連携させたいか、並列処理で更新と読み込みが同時に発生して排他処理をする必要がある場合 この二つのケースに該当するときは規模に関わらずRDBを使うとトラブルが少ないです 参考ページはよく分かりませんが、RDBの初心者だとすると、まずpandasが良いかも知れません >>706 ありがとうございます やっぱり結局pandas最強ですね to_csv()でcsv一発ですし raspberry pi上でDB動かすのも嫌ですし ツイッターのapiを使って、あるユーザがフォローしてるユーザの抽出できるプログラムってない? 有吉がフォローしてるユーザをcsvに名前だけ抽出するてきな >>708 ,709 tweepyというpythonからTwitterのAPI叩くためのライブラリがある でもTwitterAPIって審査厳しくなってた様な気がする >>685 >>693 ありがとうございます! マスクとかを作るべきなのですね、参考にします! TwitterAPIは大分前に物凄い制限かかったな 野良アプリは絶滅させられた >>699 まさに、こういうJSON ファイルだろ。 ネスト有りの構造体・クラス { "rules": { "quotes": [2, "double"] }, "env": { "node": true, "browser": true }, "extends": "eslint:recommended" } >>707 >raspberry pi上で、DB動かすのも嫌ですし SQLite3, Memcached, MongoDB などの単純な、オンメモリDB だろ >>713 データ構造にネストが有るかどうかは重要だよね 株価のようなネストなしで記述できるタイプか ゲームキャラクターのアイテムのようにネストが必須なタイプか ネストがない場合はpandasのようなテーブル構造から保存はcsvだろうし ネストが必須な場合はclass作って保存はシリアライズ、pickleでもjoblibでもいい 最近はJavaScriptと連携をさせるために保存フォーマットをjsonにすることも多いかな RDB使ってるゲームなんかいくらでもあるだろ 株価ですら銘柄情報と株価データだけでも既にネスト構造(RDBなら2テーブル)になりうるんだが? 生データはCSVなりタブ区切りみたいに行が独立した構造に追記していくのがいいよ。 追記処理が速いし、データの分割やマージもやりやすいし、バッドデータを取り除くのも楽。これ大事。 JSONはセンサからネットワーク越しに送るデータを包むときか、追記が発生しなくなった段階でしか使わないな。 VSCodeで自作のメソッド名にマウス置いても Hoge: Hoge としかツールチップが表示されないんだけど どうやったら Hoge() に書いたコメント表示されますか? a=15000 if a>99: print(a * 1.08) else: print(a / 3) 16200.000000000002 この小数点の2ってどこから来るのか なんでそうなるのか >>721 1.08は2進数だと割り切れない循環小数になるので内部的に表現しきれなくて誤差が出る decimalモジュールを使うか、 https://docs.python.jp/3/library/decimal.html a * 108 / 100 などと工夫するか、だね。 >>721 浮動小数と呼ばれる演算で限られたビット数で何桁も異なる演算を行うようにできているから キーワードはIEEE-754かな 他にも端数の出にくい固定小数や、任意精度計算、数式処理などがあるけど多くのプログラミング言語では浮動小数点計算がデフォ >>720 ありがとうございます。 できました。 メソッド名などの下に書かなきゃならないのが謎すぎるけど... Pythonって独学で学びたいのですが、どうしたら良いでしょうか? >>731 プログラミング経験者なら>>732 も良いかもしれないけど、そうでないならハードルが高いと思うので1冊本を読んだ方が良い 今はIDEとか環境が整ってるし、書籍は専門向けじゃないかなぁ 入門書は迂遠だったり粗略だったり、実際作りながらの方が… 正確な仕様はそれこそ公式読むべきだし。VSなり入れちまおう 公式のおうむ返ししてるだけだから公式読んどけ 脱初心者しても常用するときは公式を引くんだから、どこに何が述べられてるかの勘も掴めるのは良いこと >>732 >>733 >>734 お返事、ありがとうございます。 自分のプログラムスキルはExcelのVBAでファイルの自動発番と、この自動発番のファイルから情報を集計する仕組みを作成する程度です。ポカよけでプルダウン連動とVLookupなどを盛り込むのが現在です。 目標は工事名称からおおよその工期が予測できるなんちゃってAIができたらいいなあと思ってます。 pythonやり始めて早半年 自分の力ではなにも出来ないことに絶望 ただのコピペプログラマーにしかなれない 字句の意味を理解しないままコピペするからそうなる 英語とか数学より論理的思考力っつか文章構成力かな 初心者ですが サーバーに負担をかけないようにリクエストの時間間隔をあけろとよく書いてあるんですが そうなるとダウンロードが継続中/終了の検知とかファイルが壊れてないかの判定とか そういったことをする必要があると思うんですが、どうなんでしょうか ファイルが壊れてたら困るなら間隔をあけようがあけまいがそういう処理は要るだろ 間隔をあけろというのは、相手側のリソースを占有しないようにするためだよ そこに気を使えない奴は逝ってヨシ! pythonの入門書には数秒程度の間隔を空ければok と書いてあったんですが、ダウンロードに時間がかかることもあるはずなので 実際どうなんかな?と疑問に思ったので質問しました ツールで、1秒に1回、図書館にアクセスしていた奴が、業務妨害罪で逮捕された! 1時間で、3,600回 その入門書の著者名を教えろよ 何を根拠にそんな無責任なことを書いてんだろう >>744 まさか並列ダウンロードするつもり? 行儀良くといったら間隔云々よりシリアルアクセスにするものだよ リクエスト毎にスレッドやプロセスを作るサーバーに対しては尚更 >>745 そりゃ人間業じゃないし当然だろう 30秒に1回くらいにしないとしょぼいサーバならオチてしまう 家のサーバもGoogleに落とされた もし公共サービス提供してたら業務妨害で訴えてやるわ >>742 普通はヘッダにcontent-lengthがあるから 完了してるかどうかは判る 成功したかどうかはstatus見ろ output = [[]] # output.clear() output.append(['あ']) output.append(['い']) output.append(['う']) とすると配列は、 0:[] 1:['あ'] 2:['い'] 3:['う'] となります。 最初の空配列は不要なんだけどどう書くのが適切ですか? output.clear() 入れれば大丈夫みたいですが、append() の仕方が悪い? >>750 1行目を output = [] か output=list() で試して >>750 pythonのリストはどんな型でも自由に入れられるから 変数宣言時に「リストのリスト」にする必要はないよ output = [] で十分 >>751 ありがとうです。 できました。 ほんとはCSVにしたくて 'abcd' が CSVにすると a,b,c,d になってしまう問題?で [[]] にしろとか書いてあったのでそうしてみたんだけど、 結局 [] で良くて、append(hoge.text) が間違いで append([hoge.text]) にしたらOKでした。 >>753 自分がアホなんかな 何が言いたいのかさっぱり分からない CSVにしたいの?したくないの? append(hoge.txt)が間違い? 文法的には全く間違ってない それとも何か別の言語と勘違いしているのだろうか 質問です。 Windowsのanaconda環境でpyファイルをダブルクリックから実行しようとしています。 Python.exeに関連づけて実行すると、コンソールが立ち上がってprintなどデフォルトの関数は問題なく動作するのですが、pandasなどのモジュールを含むと動作しません。 原因分かるでしょうか? ダブルクリックというイベントを使うことがだめだと思うの 教えてください。 言語PythonだけでECサイト作りたいんだけどそんなことってできますか? もちろんできるけど、独力でやるつもりならPython云々よりもLinuxやAWSのノウハウの方が重要 >>761 はっきり言ってそれ誰が利用するの? 田舎の小さな商店とかだったらいいかもしれんが for f in os.listdir〜でファイル読み込む時に ファイル名の末尾が1の次に10を読み込んで100を読み込みます。 1からその次に2を読み込んで3を読み込んでいって欲しいのですがどうすればよいですか? >>763 os.listdirの結果をリストに格納しておいて (reをimportして) 正規表現を使って ファイル名のうちの番号部分のみを抽出、 [int(抽出した番号),ファイル名]っていうリストをつくる。 抽出した番号の方をキーにしてソート。 ソートしたリストをつかって順番に読み込む。 >>764 > os.listdirの結果をリストに格納しておいて この時点で読み込んでもうとるやん >>759 Linux Python(djangoとかも) HTML CSS JavaScript SQL この辺は一通り覚えないといけないのでは。 >>763 for f in sorted(os.list, key=lambda x: int(x)) ちなみにos.listの順序は保証されたっけ? Ruby なら、 nums = %w(100 10 5 1) # 文字列を数値に変換して、ソートする nums.map!( &:to_i ).sort! p nums #=> [1, 5, 10, 100] >>756 Windowsのanacondaは activate base してから動かさないとpandas等は動かないよ ダブルクリックで動かしたいならBatファイル作るかPyInstallerでexeにする方法があるけど、多分やりたいこととは違うと思う >>762 ただの好奇心で作ってみたいと思っただけです。 趣味的な、仕組みがわかれば他に応用効くと思ったんですよ >>766 とりあえずパイソンだけでできるか知りたかった 出来るには出来るようだから勉強としてやってみる Python: def add(a, b): return a + b def opTwo(a, b, func): return func(a, b) print(opTwo(1, 2, add)) => 3 Javascript: let add = (a, b) => a + b let opTwo = (a, b, func) => func(a, b) console.log(opTwo(1, 2, add)) => 3 るびぃ〜)(;笑 def add(a, b) a + b end def opTwo(a, b, func) func(a, b) end p opTwo(1, 2, add) => Line 9:in `add': wrong number of arguments (0 for 2) (ArgumentError) from t.rb:9 プギャーm9(^Д^ ) るぅピぃではdefで定義した関数には第一級関数の資格はありませんwwww その他に似たような機能を提供するものにはなんと!ブロックとProc.newとprocとlambdaと->からより取りみどりで全部少しずつ用途と挙動が異なりますwwwwwさすが純粋オブジェクト指向言語は違うね!wwww >>767 これファイル名が全部数字じゃないと通らないだろ def key(f): __y = lambda x: int(x) if x.isdigit() else x.lower().strip() __return [y(x) for x in re.split("([0-9]+)",f)] みたいな感じでソート用のキーを返す関数を定義すると文字列内の数字の大小(ただし非負整数に限る)を考慮したリストになる 763です。 簡単と思ったら意外と複雑なのですね... Windowsでは標準があれなので楽に行けるかと思ったら大間違えでしたね。 ありがとうございます。 IDLEつかってるんですが左側に行番号を表示させることできるの? どうやったらいいの? PyCharmは無料なら全くVSCodeに及ばないし、有料なら年間200ドル 何も資料とか見ずにガンガンコード書ける人ってすごい 頭の良さももちろんあるんだろうけど何やったらそんな風になれるんだろうか >>782 同じような仕事ばかりやってればできるよ もっと有能な人は色々やるから最低限リファレンスは見る >>783 やっぱり経験が大切ということですか もっとコーディング出来るようになりたいけど自分の力だけでは何も出来ないので写経でも色んな人の見てみます >>782 逆に常に資料を見て書くようにするといい そのうち面倒臭くなって資料を読まなくなる >>776 >意外と複雑 並みレベルの奴なら>>763 ぐらいのことは楽にできるんだろう。 そうしないと実用的プログラムは作れないだろうし。 でも、超初心者用にたむろする俺らでは実力低くてこの程度の(複雑)ものでも四苦八苦 vscodeダウンロードしました これってIDLEみたいな >> ってついてる対話型モードはあるの? それとエディター画面でf5押したらそれで動くの? >>788 Ctrl+Shift+P → Show integrated terminal で ipython とか実行したらいい あのーターミナルでよくわからないけど pwd したら C:\Users\ssss PS C:\Users\ssss>[] こうなったの ¥はバックスラッシュです これってたぶんファイル置いてる場所だとおもうんだけども このVSCODEはE\Microsoft VS Codeっていうフォルダにいれてます どうして Ç: に pass とかいうのがあるんでしょうか? 勉強中だからどうでもいいといえばそうなんですがきになったの たぶんプログラムの練習して.pyのファイル保存しても容量とかほとんど消費しないからきにしなくてもいいんでしょうか? なんか微妙に意味がわからんが、 パスとは「通り道」のことで、Pythonをインストールした場合、指定しないと、 Windowsの仕様によりCドライブの下のユーザーの所に保存フォルダが作られるものだ。 パソコンの利用者が一人だと勘違いしやすいが、マルチユーザーだと考えると、 ユーザーごとに保存場所が作られると思った方が適切。 あと、ソフトでデカいのはデータであってプログラムはそんなに大きくならない。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる