X



Pythonのお勉強 Part55
■ このスレッドは過去ログ倉庫に格納されています
0581デフォルトの名無しさん
垢版 |
2018/01/31(水) 02:07:15.01ID:PK6QBrDQ
>>580
いけるよ。
wxPythonで作ったツールをpyInstallerでexe化して使ってもらってる。
もちろん、使う側にはPython環境入ってない。
0587デフォルトの名無しさん
垢版 |
2018/01/31(水) 12:38:21.98ID:UGwUWfP6
とりあえずwin10 64bitで、py 3.6.1とpyinstaller3.3ならなんの問題もなくexe化可能。

win上でmac向けを直接作るのは無理。
環境一式を固めるだけなので、mac用を作りたければ、mac上のpy環境が必要。
…だと思う。
0588デフォルトの名無しさん
垢版 |
2018/01/31(水) 15:43:34.15ID:ZZNKUbS4
yamlが非常に便利でよく使いっているのだけど,
標準ライブラリじゃないんだよね.
同じような事を標準ライブラリでやりたい場合
なんかいい方法ありますか?

例えば dl = [{'1':1}, {'2':2}] みたいな変数を
サクっとファイルに読み書きできるような機能ってありますか?
0591588
垢版 |
2018/01/31(水) 15:50:08.66ID:ZZNKUbS4
>>590
今まさに,これを調べてた!
これでいいんですね!ありがとう!
0593デフォルトの名無しさん
垢版 |
2018/01/31(水) 18:59:15.58ID:t+i4Nq8A
>>587
ID変わります
僕はmacユーザーなのでその点は大丈夫そうです
必要なパッケージも分かったのでだらだら実践に移ろうと思います
ありがとうございました
0595デフォルトの名無しさん
垢版 |
2018/02/01(木) 10:52:44.15ID:DzJPkPrp
できますわな
0601デフォルトの名無しさん
垢版 |
2018/02/02(金) 06:44:00.41ID:TdwKXjoL
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)
0602デフォルトの名無しさん
垢版 |
2018/02/02(金) 06:49:05.11ID:TdwKXjoL
global aaa加えてもダメ。

aaa={2,6,9}

def fff(bbb):
global aaa
bbb.append(77)
print(bbb)

fff(aaa)
0603デフォルトの名無しさん
垢版 |
2018/02/02(金) 07:19:00.22ID:lpRrOiv+
>aaa={2,6,9}というリストに
{ } は、set・集合だろ

>AttributeError: 'set' object has no attribute 'append'
だから、setには、append が無い

リストは、[2, 6, 9]
0604デフォルトの名無しさん
垢版 |
2018/02/02(金) 07:23:51.94ID:EzUfnp8s
appendをaddに変えると良いよ
0605デフォルトの名無しさん
垢版 |
2018/02/02(金) 07:26:15.84ID:sggyuymU
フォントωわかりにくすぎ
0606デフォルトの名無しさん
垢版 |
2018/02/02(金) 07:29:37.72ID:29y3RqyU
コ−ド打ち間違いでした。
リスト[2, 6, 9]だと、出来ますか?
今、通勤中で、パソコンがないので。。。
0608デフォルトの名無しさん
垢版 |
2018/02/02(金) 12:09:46.98ID:EhnDmFZw
これは、出来る?
グローバルなリストを、
関数内で、添え字で代入だけど。
今、パソコンがない環境なのです。。。

aaa = [2,6,9]

def fff(bbb):
bbb [1] = 77
print(bbb)

fff(aaa)
0612デフォルトの名無しさん
垢版 |
2018/02/02(金) 12:54:54.71ID:YzG776tY
>>608
下請けじゃないから試してないけど、多分できない。
関数内でglobalしとけば可能なはず。
0613デフォルトの名無しさん
垢版 |
2018/02/02(金) 13:08:20.53ID:oiJ7/Utq
Pythonで物理乱数を発生させたいと考えてます。
できるだけお金を掛けずに簡単にやる方法ってありませんか。
当方、プログラミングは最近始めたばかりの初心者です。
よろしくお願いします。

私が考えてるのはマイクなどで音を拾って音の周波数から乱数を発生。。。
難しいですかね?どなたかやり方教えてください。
0614デフォルトの名無しさん
垢版 |
2018/02/02(金) 13:41:32.66ID:EhnDmFZw
611、612さん、thx!
出来ました!
パソコン持って来てないけど、
分かりました(^-^)
0615デフォルトの名無しさん
垢版 |
2018/02/02(金) 13:52:45.89ID:HmPuZc+/
>>613
/dev/randomのソースを読む

アホは普通の人より多く金を払わなければ存在を認められないんだよ
それが嫌ならアホを脱出しろ
0616愛知人
垢版 |
2018/02/02(金) 13:55:08.72
それ読んでも擬似乱数の知識しか身に付かなくね
0619デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:07:47.03ID:oiJ7/Utq
サイコロとかはなしでお願いします。
自動的に乱数を発生させたいのです。
0621デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:12:35.82ID:vtmlqeLa
普通はrdrandとか使うんじゃないか
まさにrdrandっていうモジュールがPyPIにあるから
それ使えばいいだろ
0622愛知人
垢版 |
2018/02/02(金) 14:13:14.53
単位時間の音声データのハッシュを計算する。
素人だから本当にこれで良いのか知らないけど。
0623愛知人
垢版 |
2018/02/02(金) 14:17:04.86
ググったら/dev/randomもハードウェア乱数生成器ぽい
0624デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:24:28.06ID:oiJ7/Utq
>>621
それってどういう仕組なんですか。
結局、CPUの擬似乱数を取得してるのと違うんでしょうか?


>>622
それ、しかないんですかね。。。
やり方キボンですw
0625愛知人
垢版 |
2018/02/02(金) 14:32:12.24
>>624
rdrandも>>622みたいな感じで生成してるっぽい
0629デフォルトの名無しさん
垢版 |
2018/02/02(金) 16:14:16.94ID:HmPuZc+/
>>617
愛恥人とかいう馬糞野郎が何か言っているが
/dev/randomはハードウェア乱数生成器だぞ

お前のような人間未満の低脳障害者が人間様を疑うなんぞ100年早い
新小岩駅から成田エクスプレスに飛び込んで死ね
0630デフォルトの名無しさん
垢版 |
2018/02/02(金) 16:35:22.84ID:PrdnpgbH
鉄道ヲタク?
0631愛知人
垢版 |
2018/02/02(金) 16:37:54.48
>>629
スマンカッタw
0632デフォルトの名無しさん
垢版 |
2018/02/02(金) 19:02:33.57ID:EhnDmFZw
グローバル変数aaaを、関数を使って、888にしたい。
以下のコ−ドでは、出来ません。
どうすれば、良いでしょうか?

aaa = 0

def fff(bbb):
global aaa
bbb = 888

fff(aaa)
print(aaa)
0634デフォルトの名無しさん
垢版 |
2018/02/02(金) 20:06:10.78ID:woVD/Zi7
俺、さっぱり分からんけど、とりあえず妄想で
def fff(bbb):
global aaa
aaa = 888
で良いんじゃないのか
0635デフォルトの名無しさん
垢版 |
2018/02/02(金) 20:06:19.58ID:EhnDmFZw
自分のpgには、必要なのですよ。
0636デフォルトの名無しさん
垢版 |
2018/02/03(土) 00:55:28.57ID:1aIYWNNN
pyqtとpyinstallerでアプリ作りたい者です
が、pyqtにmatplotlibのグラフを表示できなくて一旦棚上げしようと思います
おれにはまだ早かった...
0637デフォルトの名無しさん
垢版 |
2018/02/03(土) 01:01:33.26ID:17CpKkvr
632ですが、自己解決しました。
関数の戻り値を書けばできました。
0638デフォルトの名無しさん
垢版 |
2018/02/03(土) 05:09:27.40ID:pNC8Ba1v
pyqtにmatplotlibのグラフを表示

wxなら簡単
0641デフォルトの名無しさん
垢版 |
2018/02/03(土) 14:09:01.94ID:jcEuZ+bz
>>639
わからないならレスしないでくださいうざいだけです
0643デフォルトの名無しさん
垢版 |
2018/02/03(土) 15:26:24.05ID:3J9RZTRr
>>638
wxaggもqt4aggもmatplotlibの表示先を変えるための実装なので、殊更wxの方が簡単なわけではないと思うけど。
0645デフォルトの名無しさん
垢版 |
2018/02/03(土) 16:59:49.58ID:TW07+iIs
漏れは判らん時は無視してる
0646愛知人
垢版 |
2018/02/03(土) 17:12:24.52
普通に解るが
0650デフォルトの名無しさん
垢版 |
2018/02/06(火) 01:47:55.47ID:4qlhSHmu
Numpyで二つの一次元配列を要素順(縦方向)に比較して何個一致してるか計算したいのですが、
どうしたら良いのでしょうか?どなたかご教授お願いします。

[1,2,3,4,5]
[1,2,3,5,4]

この場合1,2,3が一致してるので、一致率は6割。
こんな感じの計算をしたいのです。
0651デフォルトの名無しさん
垢版 |
2018/02/06(火) 02:25:49.31ID:4s/KmnsS
>>650
なんか自分ではやりたくない宿題・課題を俺らにやらせようって感じを受けるんだが...
>どうしたら良いのでしょうか?
日本語でそれをやる手順を書けるのか?
実はそれすらわからないのか? こうなるとPython以前のことになる
0655デフォルトの名無しさん
垢版 |
2018/02/06(火) 03:33:07.91ID:4qlhSHmu
自分なりに頑張って勉強してます。
調べてもよくわからなかったので質問させて頂きました。
煽り耐性がないのでマジで凹みます。
本当に煽りはやめてください。。。
0656デフォルトの名無しさん
垢版 |
2018/02/06(火) 04:03:14.49ID:6Ikfm20h
まさか、まったくわからないわけではないだろう
どういうアプローチがあると考えて、それはどうしてうまく行かなかったのか書いてみて?
0657デフォルトの名無しさん
垢版 |
2018/02/06(火) 04:23:43.40ID:4qlhSHmu
ifとforで一個一個比較して一致したものをカウントするという原始的な方法なら思いついたのですが
配列の要素が数十万とかになると計算に凄く時間がかかりすぎて自分はおかしな事をしてると思いました。
Numpyを使えばもっと早く計算できるのではないかと思ったのです。
Numpyで配列同士を除算して1になったものをカウントするという方法も考えましたが
何かもっとよい方法があるのではないかと思って質問するに至りました。
0658デフォルトの名無しさん
垢版 |
2018/02/06(火) 04:49:55.16ID:l7KCE7ID
>>657
>>650と話変わってないか?
>>650は要素数5つのリストで,どうしたら良いのでしょうか?(さっぱりわかりませんな感じ)
>>657では実はifとforで一個一個比較する方法でなら出来た(?)、でも、その方法だと
要素が数十万とかになると計算に凄く時間がかかりすぎるから何か時短できるやり方はない?
0660デフォルトの名無しさん
垢版 |
2018/02/06(火) 08:32:31.23ID:DKsNWAcY
考え方は別に間違ってないと思うけど、なぜ最後までやってみてから検討しないのか

a=比較対象のリスト1
b=比較対象のリスト2
c=a-b #一致する箇所だけ数値が0になる
count=len(np.where(c==1)[0]) #0の数をカウント
par=count/len(c)*100 #割合を求める
0662デフォルトの名無しさん
垢版 |
2018/02/06(火) 10:09:01.65ID:4qlhSHmu
>>660
ありがとうございます。
考え方は間違ってなかったんですね!
そのコードを使わせていただきます。
0663デフォルトの名無しさん
垢版 |
2018/02/06(火) 10:10:16.24ID:HnlXhHfV
行列にする
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
になる
線形代数使って対角線を一発で判断
0664デフォルトの名無しさん
垢版 |
2018/02/06(火) 10:12:03.78ID:HnlXhHfV
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
かな
まあがんがれ
0665デフォルトの名無しさん
垢版 |
2018/02/06(火) 10:24:10.70ID:4qlhSHmu
>>663
線形代数!?
勉強したことないので勉強してみます。
ありがとうございます。

行列にする分、メモリは食いそうですが
速度は早くなるんでしょうか?
0667デフォルトの名無しさん
垢版 |
2018/02/06(火) 10:54:41.09ID:AHbr4rI2
>>> 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]
>>>
0668デフォルトの名無しさん
垢版 |
2018/02/06(火) 11:09:26.24ID:4qlhSHmu
>>667
配列の要素数が違っても比較できるんですね。
ありがとうございます。
勉強させていただきます。
0669遊園地
垢版 |
2018/02/06(火) 11:10:04.68ID:dkDe9DfL
動的に処理すればメモリは食わない。
比較して、どういうデータが欲しいのか謎

データ形式はリスト(配列)に1つの値しか入って無い前提で良いの?
0670遊園地
垢版 |
2018/02/06(火) 11:17:31.07ID:dkDe9DfL
既に解決してるだろうけど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)
0671デフォルトの名無しさん
垢版 |
2018/02/06(火) 11:23:03.09ID:4qlhSHmu
>>669
そういうものなんですね。メモリは食わないんですか!
比較して何個一致してるか。何%一致してるかを知りたいだけです。
要素数が数十万入った場合も想定して
とにかく今は速度を最優先に考えております。

データはリスト内に1つの前提で構いません。
0673遊園地
垢版 |
2018/02/06(火) 11:37:05.42ID:dkDe9DfL
ってかw 一行で書けるのかww

地道にfor文回して行く方法しか思い付かない
0674デフォルトの名無しさん
垢版 |
2018/02/06(火) 12:58:07.14ID:HnlXhHfV
>>665
比較や条件分岐がなくなると爆高速になる
0677デフォルトの名無しさん
垢版 |
2018/02/06(火) 13:36:32.07ID:4qlhSHmu
>>674
そういうものなんですね。
ありがとうございます。頑張ってみます!

>>675
ありがとうございます。
関数を作ってくれたんですね!
コードを勉強させていただきます。

>>676
おぉ。凄くシンプルですね。
Numpyを使うとこんなシンプルにコードが掛けけるんですね?
ありがとうございます。
0679遊園地
垢版 |
2018/02/06(火) 15:40:07.54ID:dkDe9DfL
そして、最後にこう言おう
 かける 100 !!!
0680デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:30:50.21ID:AHbr4rI2
>>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
■ このスレッドは過去ログ倉庫に格納されています

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