Pythonのお勉強 Part55
■ このスレッドは過去ログ倉庫に格納されています
>>580 いけるよ。 wxPythonで作ったツールをpyInstallerでexe化して使ってもらってる。 もちろん、使う側にはPython環境入ってない。 >>581 遅くにありがとう mac用に.appでも出力できるんですよね? みなさんありがとうございます https://qiita.com/gollowars/items/387d5fecd29c26cace99 この記事を見て,qtとpyinstallerでmac用アプリにも出力できるのかあと思ったのですが大丈夫ですよね? 周りにlinuxユーザーがいないので,macとwindowsで動けば充分です とりあえずwin10 64bitで、py 3.6.1とpyinstaller3.3ならなんの問題もなくexe化可能。 win上でmac向けを直接作るのは無理。 環境一式を固めるだけなので、mac用を作りたければ、mac上のpy環境が必要。 …だと思う。 yamlが非常に便利でよく使いっているのだけど, 標準ライブラリじゃないんだよね. 同じような事を標準ライブラリでやりたい場合 なんかいい方法ありますか? 例えば dl = [{'1':1}, {'2':2}] みたいな変数を サクっとファイルに読み書きできるような機能ってありますか? >>590 今まさに,これを調べてた! これでいいんですね!ありがとう! >>587 ID変わります 僕はmacユーザーなのでその点は大丈夫そうです 必要なパッケージも分かったのでだらだら実践に移ろうと思います ありがとうございました PyQtでラベルをうごかしたりアニメーションさせたりってできますの? pandasでExcelのVLOOKUPみたいな事をしたいのですが どうやったらできますか。 aaa={2,6,9}というリストに、 fff()関数に渡して、77を加えたいのですが、 エラーが出ます。どうすればいい? AttributeError: 'set' object has no attribute 'append' aaa={2,6,9} def fff(bbb): bbb.append(77) print(bbb) fff(aaa) global aaa加えてもダメ。 aaa={2,6,9} def fff(bbb): global aaa bbb.append(77) print(bbb) fff(aaa) >aaa={2,6,9}というリストに { } は、set・集合だろ >AttributeError: 'set' object has no attribute 'append' だから、setには、append が無い リストは、[2, 6, 9] コ−ド打ち間違いでした。 リスト[2, 6, 9]だと、出来ますか? 今、通勤中で、パソコンがないので。。。 aaa = [2,6,9] def fff(bbb): bbb.append(77) print(bbb) fff(aaa) これでできた これは、出来る? グローバルなリストを、 関数内で、添え字で代入だけど。 今、パソコンがない環境なのです。。。 aaa = [2,6,9] def fff(bbb): bbb [1] = 77 print(bbb) fff(aaa) >>608 下請けじゃないから試してないけど、多分できない。 関数内でglobalしとけば可能なはず。 Pythonで物理乱数を発生させたいと考えてます。 できるだけお金を掛けずに簡単にやる方法ってありませんか。 当方、プログラミングは最近始めたばかりの初心者です。 よろしくお願いします。 私が考えてるのはマイクなどで音を拾って音の周波数から乱数を発生。。。 難しいですかね?どなたかやり方教えてください。 611、612さん、thx! 出来ました! パソコン持って来てないけど、 分かりました(^-^) >>613 /dev/randomのソースを読む アホは普通の人より多く金を払わなければ存在を認められないんだよ それが嫌ならアホを脱出しろ >>616 ですよね。。。 スキルのない奴が人をアホ呼ばわりとか。。。 どなたかDAISOで揃うもので物理乱数を発生させる方法をお願いします。m(_ _)m サイコロとかはなしでお願いします。 自動的に乱数を発生させたいのです。 ID:TdwKXjoL ID:29y3RqyU ID:EhnDmFZw ID:oiJ7/Utq 普通はrdrandとか使うんじゃないか まさにrdrandっていうモジュールがPyPIにあるから それ使えばいいだろ 単位時間の音声データのハッシュを計算する。 素人だから本当にこれで良いのか知らないけど。 ググったら/dev/randomもハードウェア乱数生成器ぽい >>621 それってどういう仕組なんですか。 結局、CPUの擬似乱数を取得してるのと違うんでしょうか? >>622 それ、しかないんですかね。。。 やり方キボンですw >>624 rdrandも>>622 みたいな感じで生成してるっぽい >>625 そうなんですか!! 使ってみます。。 ありがとん。 >>624 https://news.mynavi.jp/article/20110921-ivy_bridge/ Ivy Bridgeのrdrandの仕組みはここに簡単に書いてあるが ただ電気回路の知識がないと理解できなさそう >>617 愛恥人とかいう馬糞野郎が何か言っているが /dev/randomはハードウェア乱数生成器だぞ お前のような人間未満の低脳障害者が人間様を疑うなんぞ100年早い 新小岩駅から成田エクスプレスに飛び込んで死ね グローバル変数aaaを、関数を使って、888にしたい。 以下のコ−ドでは、出来ません。 どうすれば、良いでしょうか? aaa = 0 def fff(bbb): global aaa bbb = 888 fff(aaa) print(aaa) 俺、さっぱり分からんけど、とりあえず妄想で def fff(bbb): global aaa aaa = 888 で良いんじゃないのか pyqtとpyinstallerでアプリ作りたい者です が、pyqtにmatplotlibのグラフを表示できなくて一旦棚上げしようと思います おれにはまだ早かった... 632ですが、自己解決しました。 関数の戻り値を書けばできました。 pyqtにmatplotlibのグラフを表示 wxなら簡単 >>639 わからないならレスしないでくださいうざいだけです >>636 matplotlib qt4agg とかで検索すると幸せになれるかもしれない >>638 wxaggもqt4aggもmatplotlibの表示先を変えるための実装なので、殊更wxの方が簡単なわけではないと思うけど。 >>641 は意味わかるの? 俺はさっぱりなんだが。 https://www.tutorialspoint.com/pyqt/pyqt_qclipboard.htm ここのexampleのソースコードさがしてるんだけど、このサイトのどこかにありますか?探しても見つからない。 これと同じものが書ければ解決なんですが Numpyで二つの一次元配列を要素順(縦方向)に比較して何個一致してるか計算したいのですが、 どうしたら良いのでしょうか?どなたかご教授お願いします。 [1,2,3,4,5] [1,2,3,5,4] この場合1,2,3が一致してるので、一致率は6割。 こんな感じの計算をしたいのです。 >>650 なんか自分ではやりたくない宿題・課題を俺らにやらせようって感じを受けるんだが... >どうしたら良いのでしょうか? 日本語でそれをやる手順を書けるのか? 実はそれすらわからないのか? こうなるとPython以前のことになる 宿題じゃなくて自主的に勉強してます。 煽りはやめて>< 自分なりに頑張って勉強してます。 調べてもよくわからなかったので質問させて頂きました。 煽り耐性がないのでマジで凹みます。 本当に煽りはやめてください。。。 まさか、まったくわからないわけではないだろう どういうアプローチがあると考えて、それはどうしてうまく行かなかったのか書いてみて? ifとforで一個一個比較して一致したものをカウントするという原始的な方法なら思いついたのですが 配列の要素が数十万とかになると計算に凄く時間がかかりすぎて自分はおかしな事をしてると思いました。 Numpyを使えばもっと早く計算できるのではないかと思ったのです。 Numpyで配列同士を除算して1になったものをカウントするという方法も考えましたが 何かもっとよい方法があるのではないかと思って質問するに至りました。 >>657 >>650 と話変わってないか? >>650 は要素数5つのリストで,どうしたら良いのでしょうか?(さっぱりわかりませんな感じ) >>657 では実はifとforで一個一個比較する方法でなら出来た(?)、でも、その方法だと 要素が数十万とかになると計算に凄く時間がかかりすぎるから何か時短できるやり方はない? 考え方は別に間違ってないと思うけど、なぜ最後までやってみてから検討しないのか a=比較対象のリスト1 b=比較対象のリスト2 c=a-b #一致する箇所だけ数値が0になる count=len(np.where(c==1)[0]) #0の数をカウント par=count/len(c)*100 #割合を求める >>660 ありがとうございます。 考え方は間違ってなかったんですね! そのコードを使わせていただきます。 行列にする aは 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5 になる bは aは 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 5 0 0 0 4 0 になる 線形代数使って対角線を一発で判断 bは 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 5 0 かな まあがんがれ >>663 線形代数!? 勉強したことないので勉強してみます。 ありがとうございます。 行列にする分、メモリは食いそうですが 速度は早くなるんでしょうか? やっぱ機械学習や、時系列扱う場合線形代数は必須ですよね。。。 >>> import numpy as np >>> from itertools import zip_longest >>> >>> a = [1,2,3,4,5] >>> b = [1,2,3,5,4] >>> np.mean([v1==v2 for v1,v2 in zip_longest(a,b)]) * 100 60.0 >>> >>> import random >>> c = [random.randrange(1,10) for _ in range(random.randrange(5,10))] >>> d = [random.randrange(1,10) for _ in range(random.randrange(5,10))] >>> np.mean([v1==v2 for v1,v2 in zip_longest(c,d)]) * 100 25.0 >>> >>> c [1, 1, 5, 2, 8] >>> d [1, 2, 7, 2, 9, 5, 1, 1] >>> >>667 配列の要素数が違っても比較できるんですね。 ありがとうございます。 勉強させていただきます。 動的に処理すればメモリは食わない。 比較して、どういうデータが欲しいのか謎 データ形式はリスト(配列)に1つの値しか入って無い前提で良いの? 既に解決してるだろうけどw >>650 a=[1,2,3,4,5] b=[1,2,3,5,4] c=list(zip(a,b)) d=0 for i in c: ____if int(i[0])==int(i[1]): ________d+=1 print(d/len(c)*100) >>669 そういうものなんですね。メモリは食わないんですか! 比較して何個一致してるか。何%一致してるかを知りたいだけです。 要素数が数十万入った場合も想定して とにかく今は速度を最優先に考えております。 データはリスト内に1つの前提で構いません。 >>670 いくつか解決策は見つかりましたが 色々なコードを見られるのは勉強になります! ってかw 一行で書けるのかww 地道にfor文回して行く方法しか思い付かない >>665 比較や条件分岐がなくなると爆高速になる こうじゃね a = np.array([1, 2, 3, 4, 5]) b = np.array([1, 2, 3, 5, 4]) np.sum(a == b) / a.size >>674 そういうものなんですね。 ありがとうございます。頑張ってみます! >>675 ありがとうございます。 関数を作ってくれたんですね! コードを勉強させていただきます。 >>676 おぉ。凄くシンプルですね。 Numpyを使うとこんなシンプルにコードが掛けけるんですね? ありがとうございます。 >>676 ?シンプルだよね。可読性、処理速度、隙が無いと思うよ。だけど、おいら負けないよ。 えー、か、改良版が躍動する処理速度を皆さんに見せたいね。 >>> import time, random; import numpy as np; from itertools import zip_longest >>> def oree(a,b): ____same = [True for v1,v2 in zip_longest(a,b) if v1==v2] ____return sum(same)/max(len(a), len(b)) * 100 >>> def omae(a,b): ____a = np.array(a) ____b = np.array(b) ____return np.sum(a==b) / a.size * 100 >>> oree([1,2,3,4,5],[1,2,3,5,4]) 60.0 >>> def timer(func, *args): ____start = time.time() ____r = func(*args) ____end = time.time() ____print(f'{func.__name__} time = {end - start:.5f}, return = {r:.5f}') >>> def test(func1, func2): ____a = [random.randrange(1,200) for _ in range(1000000)] ____b = [random.randrange(1,200) for _ in range(1000000)] ____timer(func1, a, b); timer(func2, a, b) >>> test(oree, omae) oree time = 0.04913, return = 0.50930 omae time = 0.10629, return = 0.50930 >>> test(oree, omae) oree time = 0.05014, return = 0.49830 omae time = 0.09525, return = 0.49830 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる