1 名前:デフォルトの名無しさん mailto:sage [2021/03/16(火) 07:19:44.36 ID:PfTIXkDh.net] 当スレに★Python以外のプログラミング言語での回答類を書くべからず★ 派生言語はそれぞれ専スレがあるのでそっち池。 「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合は、 表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。 Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ 5chの仕様【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】のため、どうにもなりましぇん。 ↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式サイト◇ www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 くだすれPython(超初心者用) その52【まず1嫁】 https://mevius.5ch.net/test/read.cgi/tech/1610137345/ 次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい) ### END OF TEMPLATE ###
32 名前:デフォルトの名無しさん [2021/03/20(土) 21:03:20.71 ID:cHAvtLAs.net] print(range(3)) と一行書いて実行すると、 0 1 2 と表示されるはずなのに range(0, 3) としか表示されない。どうしてでしょうか。
33 名前:デフォルトの名無しさん mailto:sage [2021/03/20(土) 21:12:13.24 ID:cHAvtLAs.net] >>32 は自己解決しました
34 名前:デフォルトの名無しさん mailto:sage [2021/03/20(土) 21:41:21.50 ID:GfnHrk+w.net] オブジェクトだからさ。
35 名前:デフォルトの名無しさん mailto:sage [2021/03/20(土) 23:09:48.82 ID:SzdWYV/s.net] 好きなだけ広い範囲を取れるぞ! 好きなだけ取って楽しめよ!
36 名前:デフォルトの名無しさん [2021/03/21(日) 00:41:47.55 ID:c1Fm1qtl.net] >>32 もしrange(5000兆)とかがその場で展開されたらメモリが足りなくなるから 必要になってから都度計算するrangeオブジェクトっていうオブジェクトになる
37 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 01:15:24.00 ID:ba25SXqE.net] 自己解決したと書いてるのに、蘊蓄を披露するのが我慢できない人達
38 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 03:30:01.28 ID:Duyg5pmm.net] 蛇だけに!
39 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 07:55:22.35 ID:Xyvra8tZ.net] 「じゃあ」ってか >>37 自己解決のさいは なにしたら解決できたか書いて毛なのに むしろ質問者は書いていかないし
40 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 08:02:45.18 ID:rOmbGrT+.net] このくらいは質問する前に気づいて欲しいな そしたら蘊蓄披露したがりクンも沸いてこなかった つまり質問者が悪い
41 名前:デフォルトの名無しさん [2021/03/21(日) 09:50:58.07 ID:c1Fm1qtl.net] >>37 Rubyでは、・・・ とか言い出すよりマシだろ?
42 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 10:50:14.27 ID:ba25SXqE.net] すまん、俺が悪かった。
43 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 10:56:39.10 ID:eocPnEKi.net] 「オブジェクトだから」だと思ってる人達は文字列(str)はオブジェクトじゃないと思ってるのかな? range(0, 3)と表示される仕組みを理解してるとは思えないんだが
44 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 11:10:46.35 ID:dweFEPRe.net] inとか調べるのがノーコストになるというのはインフォマティブだよ コンテナ実装するときにふと思い出してくれればよい
45 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 11:17:17.80 ID:dweFEPRe.net] 俺もついでにくだを巻いていくけどrangeだけなら整数2つ持ってるのと大差ない(lo<=i <hiと等価)が rangeが生きるのはもっと複雑なテスト、rangeはchainsで数珠繋ぎにして生きる
46 名前:デフォルトの名無しさん [2021/03/21(日) 11:21:05.88 ID:GVEcec50.net] Juliaというプログラミング言語がいいという話ですが、Pythonに詳しい人はPythonと比較してJuliaについてどう思いますか?
47 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 11:31:49.59 ID:ECrDs+gQ.net] ブーム前はFortran/Matlab(&Octave)と同じ感覚で配列を自在に扱える代替環境ってのがPython/numpyの需要だったのよ numpy/scipyはFortranライブラリのラッパ集として始まったわけで 今はもうPythonは手軽なスクリプト言語はじめ色んな用途が開けてるから、古い感覚だけどね C風のPythonし、結局Fortran民はJuliaを作ったわけだけど まあPythonでいい
48 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 11:42:30.17 ID:ECrDs+gQ.net] 文書がバグってた… Pythonは配列0始まり/メモリ配置行メジャーのC系の慣習を引きずってる 線形代数記法、つまり配列1始まり/メモリ配置列メジャーの数値計算の慣習と逆ってことね 新興で後者採用のFortran系の言語はJuliaくらいしかないのでそっちに慣れてるオッサンならjuliaの方が受け入れやすいと想う
49 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 11:51:31.81 ID:ECrDs+gQ.net] Pythonも不便ということはないよ 生Pythonで配列扱うmemoryviewやctvpesにちゃんと'F'フラグ容易されてるし numpyももちろんそうで、FortranコードをPython関数として簡便コンパイルするf2py.pyもある 自身をコンパイルする為だけど、もちろんユーザーも使える
50 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 11:59:02.49 ID:Duyg5pmm.net] numpy入れるとコマンドラインからf2py直接呼べるようになってるね 比較的小さいスクリプトだけど、これこそがnumpyの本体
51 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 13:02:14.02 ID:ba25SXqE.net] 超初心者スレでそのネタを書く? マウンティングが目的?
52 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 13:16:37.33 ID:Duyg5pmm.net] PythonとJulia比べるならそこの違いだろうよ Pythonでよろしい、潰しも効くし
53 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 13:20:42.89 ID:M5Jy6lC/.net] pandasで時系列データを集計やソートしたりするのですが df = pd.DataFrame([{'p':1,'at':日付オブジェクト1},{'p':3,'at':日付オブジェクト2},,,]) 時系列データフレームとして扱うためにインデックスを設定 df2 = df.set_index['at'] df2.resample('H').sum() で無事、時系列であれこれできました で、これをsqlite3にappendしようとしたとき このインデックスが時系列のままsqliteにappendすればいいのか 時系列は'at'カラムに移動させてからsqliteにappendすればいいのか迷っています ぶっちゃけどちらでもいいとは思いますが 公開されている統計データなどをみていると大抵は、(インデックスは無しか連番で)カラムに日付データが入っているので そういう慣習でもあるのかが気になります
54 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 13:38:24.45 ID:11DwdO6F.net] >>41 メモリアロケーションされてるかどうかなんて全く関係ない理由をあげて間違った理解を植え付けるくらいなら Rubyでは・・・のほうがまだマシだわ
55 名前:デフォルトの名無しさん [2021/03/21(日) 13:49:42.36 ID:c1Fm1qtl.net] 質問者はrangeをlistかtupleと同一視していると思われたから、どちらでも無い別種のオブジェクトだと教えたまでだが問題あったか? (メモリアロケーション云々は何故rangeがlistを返さないかの説明に過ぎない) いきなり__repr__の実装に言及しても訳分からんだろ
56 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 13:52:10.61 ID:b+/7pFI3.net] 0 1 2 と表示される方法を知りたかったのかも知れない。
57 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 14:24:12.67 ID:HtK2VIhJ.net] >>55 見苦しい言い訳だね〜 それなら「rangeはlistとは違うから」とでも答えておけばいいだけだろ 必死に調べて__repr__見つけたのかなw でも間違ってるしreprの実装に言及しないと説明できないと思ってる時点で分かってないから 超初心者にドヤ顔で間違った答えを教えたりRubyキチをバカにする前に公式チュートリアルくらいは読めよな
58 名前:デフォルトの名無しさん [2021/03/21(日) 14:33:51.63 ID:c1Fm1qtl.net] >>57 そうだね、ケチ付けてばかりじゃなくて「分かってる」あなたも説明してみてよ 初心者スレだからみんなの為になるよ
59 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 15:01:23.60 ID:rOmbGrT+.net] はいはい。病院でお医者さんにはなしてあげてね
60 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 15:08:07.65 ID:ba25SXqE.net] つまらん煽りは他所でやってくれ と、俺が言ってみる
61 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 17:19:57.60 ID:LD2dmgE2.net] >>58 print関数は引数のオブジェクトの文字列表現を出力する関数で range(3)の文字列表現は'0 1 2'じゃなく'range(0, 3)' なのでprint(range(3))を実行するとrange(0, 3)と表示される ちなみにlistなら'[0, 1, 2]'みたいな表現になるから'0 1 2'と表示したいなら自分で加工する必要がある 例えばprint(' '.join(str(x) for x in range(3)))
62 名前:デフォルトの名無しさん [2021/03/21(日) 17:51:46.12 ID:sFWHtMDC.net] >>> print(*range(3)) 0 1 2
63 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 19:05:58.83 ID:7CdIp7EP.net] >>62 優勝!
64 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 19:14:50.12 .net] 処理Aが同じで 無限ループしたいときと、任意回数ループしたいときを分けたいんだけど n = 10 if 条件 else 99999999 i=0 while i < n: _print('処理A') _time.sleep(1) _i += 1 無限ではないにしろこれでいいんだけど n=99999999がなんかかっこ悪い・・ 別の書き方ありませんか
65 名前:64 mailto:sage [2021/03/21(日) 19:22:48.42 .net] 自己解決・・かどうかわからないけど でいけた でも for i in range(float('inf')): は無理だった・・
66 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 19:30:08.83 ID:g0m1T9az.net] n = 10 a = 1 if 条件 else 0 i = 0 while i < n _print('処理A') _time.sleep(1) _i += a
67 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 19:46:13.27 ID:Duyg5pmm.net] [*iter]
68 名前:デフォルトの名無しさん [2021/03/21(日) 20:27:26.58 ID:c1Fm1qtl.net] >>61 その「文字列表現」を決定するのが__repr__では? __repr__の実装に言及せずとも説明できると言うのは? 単に名前を出さないだけで言及していないことにはなってないな
69 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 20:28:41.92 .net] >>66 変数増えるけどスッキリしてこっちのがいいですね ありがとうございました
70 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 20:41:49.95 ID:Duyg5pmm.net] numberを継承したoo.__lt__にreturn falseをブチ込む
71 名前:デフォルトの名無しさん [2021/03/21(日) 22:32:14.97 ID:OQZaxlrU.net] よろしくお願いいたします。 aList = [[1,2]for j in range(3)] aList = [[1,2]]*3 2つとも[[1, 2], [1, 2], [1, 2]]の多重リストが作られたのですが、なぜ下の文で多重リストができるのか教えてほしいです。
72 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 22:53:21.54 ID:mInw6BRh.net] >>68 >いきなり__repr__の実装に言及しても訳分からんだろ __repr__の実装に言及する必要なんてない __repr__が果たしてる役割を超初心者にも分かる言葉で説明すればいいだけ それができないと感じるのは自分がその事柄を理解してないから 理解してれば「オブジェクトだから」とか「アロケーションされてないから」みたいな嘘を教えたりしない
73 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 22:56:09.50 ID:mInw6BRh.net] 文字列表現がどう決まるのか、どういうついでに言っておくとprint()で使われるのは__repr__じゃなくまず__str__な __str__が定義されてない場合だけfallbackして__repr__が使われる 公式チュートリアルに書いてるので勉強してね
74 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 23:00:23.62 ID:mqfsmAhv.net] >>71 クラスの操作だからクラスをそういうふうに 作ればそうなる 何故とか本質がどうとかは設計した人の考え 便利だなと思えば使えばいい
75 名前:デフォルトの名無しさん [2021/03/21(日) 23:09:36.59 ID:OQZaxlrU.net] >>74 ありがとうございました! 気にせず使っていきます
76 名前:デフォルトの名無しさん mailto:sage [2021/03/21(日) 23:22:30.25 ID:ztnIU7M3.net] >>71 listやtupleやstrなどのシーケンスと呼ばれる型に対する*演算子は シーケンスの中身の要素を指定した回数分繰り返した新しいシーケンスを返すように定義されてる
77 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 04:49:29.76 ID:FrFq7CFg.net] >>71 FAQ中のFAQだから余計な世話かもしれんが、見た目が同じでも同じリストでは無いことに気をつけてね リストの中身は要素への参照だから、それを複製した後者は同じオブジェクトを3回参照してる(cでいえば、同じポインタx3) 見た目が同じオブジェクトを判別するためにid関数が用意されているから試してみて 前者をl1, 後者をl2として map(id, l1), map(id, l2) 前者のidは全て同じ、後者は新たに作った[1,2]を3つ並べてるので3つとも違うはず 参照の概念をややこしいと思いlistを避けたいと思うのなら、型の同じ要素を入れる場合は常にarrayを使う事を推奨する(標準型の範囲では) 具体的な値の配列なので、型チェックも入り、効率もよい
78 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 05:17:24.56 ID:FrFq7CFg.net] i for rangeイディオムは不要な添字iが気持ち悪いよな… ロジック通りに、ビルトイン関数のみでミニマルにやるには memoryview([1, 2]).cast('b', shape=(3, 2)).tolist() [[1, 2] [1, 2] [1, 2]] でいいだろう tolistはリスト表示するためなのでお好みで 数字が小さいからbyte配列にしたけど、普段使いならlongにしといた方が気楽かも
79 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 05:25:09.41 ID:FrFq7CFg.net] byteって言ってるのにbyte抜けてたごめん memoryview(bytes([1, 2])).cast('b', shape=(3, 2)).tolist() [[1, 2] [1, 2] [1, 2]] です、試してないけど多分動くだろ 実用にはbytesはarray('l', seq)へ差し替えてね
80 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 12:40:31.58 ID:uAAKNqiZ.net] while True: _a = 1 _break print(a) インデント下がって定義した変数をwhileの外でも使うのは普通なのでしょうか スコープの判断で可読性が落ちるかなと個人的に思ったのですが慣れですかね
81 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 12:53:03.86 ID:bzTgC/HJ.net] >>80 それしきの深さならえんでねーの それにしてもパイセンいわく while True:で安易に無限ループ作るのはイクナイ(・A・)らしいが
82 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 14:08:43.53 ID:Rzf9eLtl.net] >>80 python的には普通らしい ただ見通しが悪くなる場合が多いのと 勘違いによる不具合を起こさないために自分は極力避けてる
83 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 15:33:16.54 ID:uAAKNqiZ.net] >>81 ,82 なるほど とりあえずは現状維持にしときます ありやした
84 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 21:09:47.56 ID:cezDTGq+.net] >>81 Cなら for(;;) とか出来たけど itertools.count() とかダサいねん。
85 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 21:32:57.72 ID:H+rnlZW/.net] whileTrueって使ったらあかんの?
86 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 21:38:05.40 ID:bzTgC/HJ.net] 良くはない、らしい 有能なパイセン談
87 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 21:45:46.85 ID:OQmrOVJK.net] while str:
88 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 21:52:49.95 ID:10Qa0fDO.net] するな コールバックがあるから
89 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 23:07:52.41 ID:g8se3Ggw.net] Python公式リポジトリ検索してみたらほんと腐るほど見つかって嫌になった。 全部挙げきれないので一例: https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Tools/ccbench/ccbench.py#L163 https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/test/test_shlex.py#L265 https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/concurrent/futures/thread.py#L74 https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/concurrent/futures/thread.py#L202 それならまだしもwhile 1:とかもある↓ https://github.com/python/cpython/blob/63298930fb531ba2bb4f23bc3b915dbf1e17e9e1/Lib/idlelib/hyperparser.py#L240
90 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 23:19:25.97 ID:xEZrbDTS.net] >>85 無限ループ自体が処理によってはCPU負荷が上がったりするし break条件をミスってると不具合があった時にループから抜けずに変な所でエラーになる可能性も出てくる だから最初から有限回ループして確実に止まるループ設計の方が安全だよね、っていう考えはある (まあwhile True breakの方が書きやすい場面も多いけどね)
91 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 00:43:05.32 ID:ch/yi3Wo.net] 無限ループは無限ループが必要だから使うのであって、 有限のイテレータのループで書き換えられるときには当然使わないのでは? 有限と無限を同列に並べて比較すること自体がなんか違和感あるけど。
92 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 00:48:20.02 ID:BKCKGFNi.net] while自体の処理が重いから使うなってならわかるけどミスったら困るから使うなって、理由になってなくない 使いどころも無視してとにかく使うなって、先人の下手なトラウマが一人歩きしてるだけじゃねーの
93 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 02:55:45.64 ID:71b8io/J.net] まあループの有限性が事前にわかるようならそれを表現するためにwhile 1: 使うのは適切じゃないって話だろ。 実際ループ変数ぽいの使ってなぜか while 1使ってるコードは新人にはよくある。
94 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 02:59:15.82 ID:QbxOC6mC.net] >>81 ポンコツかよ 他に無条件ループ作るコンストラクトがあるなら教えてほしいわ 上の方のレスにある9999999決め打ちでもするのか? 他にもハック挙がってるけどどう考えてもwhile True:より筋が悪いよね? 先輩が言ってたから正しい?自分の意見を持とうよ?
95 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 03:26:27.50 ID:ND3VvCO4.net] while yes=sir:
96 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 03:33:34.75 ID:QbxOC6mC.net] …と偉そうなこと言った手前、俺の習慣を紹介しておく while True や1は仕様上そうするのが筋なので、確かに冗長と批判できる truthyならwhile "comment":でも、while ...:でもよい 何の情報も含まないwhile True/1:よりは良い習慣 後者は…それが思いつかなかった時だな、コメントがbreakの傍に付いている方が合理的なケースもあるので ....は1, 2, 3, ...という一般に認知されている表記なので、trueを表現するtruthy(5シンボルとしては、1/Trueより優れている事は明らかだろう
97 名前:デフォルトの名無しさん [2021/03/23(火) 03:49:20.93 ID:zpYNNqZr.net] >>64 if not cond: __while True: ____print('処理A') ____time.sleep(1) for i in range(10): __print('処理A') __time.sleep(1) この部分だけ書けていわれたらこうするわ
98 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 06:54:35.77 ID:ZYJLDniu.net] >>97 無限ループいつ抜けるの? それと条件によって無限ループか有限ループかという2つの処理分岐が並列に書かれてないから意図が伝わりにくいよ
99 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 06:55:42.42 ID:ZYJLDniu.net] >>96 ちょっと何言ってるかわからない
100 名前:デフォルトの名無しさん [2021/03/23(火) 10:05:15.95 ID:HSGkWRhe.net] GOTO文のように無限ループ文を作れば解決する
101 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 14:54:00.54 ID:CY92qFOb.net] while Trueするのはdo~whileしたい場合 そうじゃないなら書き直したほうがいいかもね
102 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 15:46:37.69 ID:mu30Ep9P.net] ちょっとしたデバッグのときに lst = [ __{"a":0,"b":1} __''' __,{ ___"a":2, ___"b":3 __} __''' ] シンタックスエラー '''は#の複数版かと思ったら単なる文字列だったんですね。 こういうときは、ショートカットキーで複数行に#入れたり消したりする人の方が多いのかな
103 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 16:21:30.22 ID:ch/yi3Wo.net] >>102 さすがにコメントアウトショートカットで出来ないエディタを使うことはないな。 絶対に何も入れちゃいけない環境以外ではVSCodeいれちゃう。 何も入れちゃいけない環境でデバッグしなくちゃいけなくて、 lstに入れるだけいいんだったら、複数バージョンの代入文を作っておいて、if Trueとかでどれを実際に実行するかは決める、ぐらいはやるかなあ。 あとはなるべく改行を入れないで#一つでコメントアウトできるようにするって手も考えるかな。
104 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 17:12:08.45 ID:q1xbaFi+.net] Octaveだと正方行列とその逆行列の乗法で単位行列が得られる。 GNU Octave, version 4.4.1 octave:1> a = ([4,5,7;-4,1,5;-10,3,8]) octave:2> b = inv(a) octave:3> a * b ans = 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000 でもPython3だと単位行列が得られたのかよく分からない。 これで正しいの? Python 3.7.3 >>> import numpy as np >>> a = np.array([[4,6,7],[-4,1,5],[-10,3,8]]) >>> np.linalg.inv(a) array([[ 0.04666667, 0.18 , -0.15333333], [ 0.12 , -0.68 , 0.32 ], [ 0.01333333, 0.48 , -0.18666667]]) >>> b = np.linalg.inv(a) >>> a @ b array([[ 1.00000000e+00, -4.44089210e-16, 0.00000000e+00], [ 2.77555756e-17, 1.00000000e+00, 0.00000000e+00], [ 1.38777878e-17, 0.00000000e+00, 1.00000000e+00]])
105 名前:デフォルトの名無しさん [2021/03/23(火) 17:43:46.60 ID:SeSscUQI.net] >>101 どうして?
106 名前:デフォルトの名無しさん [2021/03/23(火) 18:30:46.10 ID:f4Z9PwYH.net] >>104 計算誤差でしょ 非対角成分は0にかなり近い
107 名前:デフォルトの名無しさん mailto:sage [2021/03/23(火) 18:47:26.71 ID:WuxMgk/9.net] 行列が違うのはおいといてOctaveもnumpyも基本は浮動小数点数の演算だから丸め誤差などによりピッタリゼロになるとは限らない Octaveで format long e を実行した後に確認すると多分ゼロになってないと思うよ 表示形式でゼロに見えてるだけだと思う うちの環境だと0.00000じゃなくて-0.00000になる成分あるし
108 名前:デフォルトの名無しさん [2021/03/24(水) 19:57:42.51 ID:8oiSJv/j.net] 例えば、Pythonを用いたプログラミングの本を読んでいるとします。 その本の著者のサイトにPythonコードが「.pyファイル」としてダウンロードできるようになっているとします。 ある読者は、普段からIDEではなく、Jupyter Notebookを愛用しているとします。 そのため、この読者は、Jupyter Notebookのセルに著者の「.pyファイル」をロードして、コードを読んだり、変更したり、実行したりしたいと考えています。 この読者はどうすればこれを実現できるのでしょうか?
109 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 20:00:25.38 ID:jO3PWgho.net] この読者って自分のこと?
110 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 20:04:40.15 ID:QbxZqHqJ.net] >>108 IDE使おうが同じことすると思うのだけど なぞなぞに思える jupyter notebookは知らないがセルじゃなくてシェルなのだろうな
111 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 20:19:50.51 ID:8oiSJv/j.net] >>109-110 ありがとうございます。 >>109 自分のことです。 %load sample.py とセルに入力すればいいようです。
112 名前:デフォルトの名無しさん [2021/03/24(水) 20:23:27.54 ID:8oiSJv/j.net] JupyterLab上でグラフを表示するには、 %matplotlib inline というコマンドをセルに入力して実行しないといけないということで、実際今までそうしてきました。 今日、このコマンドを入れずに、 # %load matplotlibexample.py import matplotlib.pyplot as plt import numpy as np t = np.linspace(-3, 3, 1000) plt.plot(t, np.exp(-t**2)*np.sin(20*t)) plt.title('sample graph $x(t)=e^{-t^2}\sin(20t)$') plt.xlabel('t') plt.ylabel('x') plt.show() を実行したところ、ちゃんとノートブック上にグラフが表示されました。 %matplotlib inline はもう入力しなくてもよくなったのでしょうか?
113 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 20:48:55.22 ID:SWND22zP.net] >>110 横からだけどセル。 notebook用語なのでpython以外のカーネルにしてもセル。 実行単位なんだけどあるセルで算出してる結果に依存してる別のセルを実行する際に依存先のセル未実行だとエラーとかいろいろめんどい。 一世を風靡したスライド I Don't Like Notebooks https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV-dkAIsUXP-AL4ffI/mobilepresent?slide=id.g362da58057_0_1 2018年のjupyterconでの発表でした https://conferences.oreilly.com/jupyter/jup-ny/public/schedule/detail/68282.html 当時の反応(英語) https://www.reddit.com/r/Python/comments/9aoi35/i_dont_like_notebooks_joel_grus_jupytercon_2018/
114 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 01:57:39.05 ID:5Yw77v05.net] もしかして.pyファイルをjupyter notebookで実行する方法聞いてるだけか 何でそんな長々と意味不明なこと書いてるの?
115 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 02:19:54.21 ID:Lv/3T6MK.net] 回りくどくて草
116 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 04:13:00.19 ID:TW8zAfP8.net] 統失の特徴
117 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 08:02:26.68 ID:np4EPf1w.net] コピペで大体実行できるかな 別にサクラエディタでもVSCodeでもいいから.pyファイルを開きコピペ ただしsjisとUTF-8とか あとインデントに気を付ける コピペでインデントがずれて動かないことがあるので そこは丹念に直す
118 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 08:21:24.72 ID:ITDRmOAn.net] tkinterで 200*100じゃなくて 200x100と小文字のエックスするの何故なのか教えてほしいです……
119 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 08:39:22.55 ID:3ixfSSYA.net] 乗算じゃなくて ピクセルで領域指定だからジャネーノ とエスパーしてみる
120 名前:デフォルトの名無しさん [2021/03/25(木) 14:26:26.89 ID:B8lnjfbN.net] 以下のコードを実行すると、グラフがf(x) = 0のグラフになってしまい、意図したものと異なってしまいます。 どう修正すれば意図通りの結果が得られますでしょうか? ベクトル化についてよく分かっていないので、そのあたりがあやしいと思っています。 import numpy as np import matplotlib.pyplot as plt PI = np.pi def func_x(t): if 0 <= t: return np.sin(t) else: return 0 npfunc_x = np.vectorize(func_x) t = np.linspace(-PI, PI, 10000) x = npfunc_x(t) plt.plot(t, x) plt.show()
121 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 14:28:00.54 ID:Nsykn7+b.net] >>120 そう言う時はxの値を見てみましょう やり方は「python デバッグ」でググったら出てきます
122 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 14:33:03.93 ID:B8lnjfbN.net] >>121 xは全部0の配列になっています。
123 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 14:37:18.67 ID:3ixfSSYA.net] 0ベクトルにナニかけても0やぞ 算数やりなおせ
124 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 14:53:03.27 ID:B8lnjfbN.net] >>123 意味が分かりません。 xは関数の戻り値です。 xに0などかけていません。
125 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 14:57:17.24 ID:8wVz7C90.net] 出力は一番目の値で決定されるから、return 0.0とするかotypeを指定しろ 不等号逆向きにすると動作するけど、そのコードが動作しないのは出力が整数型に固定されて切り捨てでゼロ扱いされるから
126 名前:デフォルトの名無しさん [2021/03/25(木) 15:03:02.76 ID:B8lnjfbN.net] >>125 return 0.0 に変更したら、動作しました。 ありがとうございました。
127 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 15:26:22.39 ID:vHK7Evso.net] 今まではプログラミングの経験はなく、 教養としてpythonを勉強し始めました。 ただ仕事で使う機会もなく、いまいち勉強に身が入らない感じです。 皆さんはどうされているんですか? ここのスレだと仕事で使う人が多いんでしょうか。
128 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 15:39:56.92 ID:3ixfSSYA.net] >>127 完全に趣味 だがしかし 使いこなせれば仕事でも楽ができる
129 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 15:43:34.06 ID:3ixfSSYA.net] >>124 インデントが崩壊していたからてきとーに見てた 正直すまんかった >>125 横じゃが >return0.0 こんな手があるんだ! 小数まで計算するとコンピュータがついてけないからって 都度都度四捨五入処理をするよう組まれてた ン十年前のプログラムを Pythonで書き直すときにハマったのをおもいだした
130 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 16:49:02.78 ID:Q40pz2EP.net] >>127 ブラゲーのbot運用 その次がエロサイトのスクレイピングと自動分類 たまに業務データの解析で使うときもある
131 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 16:54:43.80 ID:5Yw77v05.net] >>127 こういうのは何か目標がないと続かないと思います 仕事で使うとか〇〇を作りたいとか
132 名前:デフォルトの名無しさん mailto:sage [2021/03/25(木) 17:24:40.64 ID:XNAp3E0g.net] >>127 相場売買のAIを作ろうと思ってます