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コピペ ログインしないで投稿すると一週間で自動削除
59デフォルトの名無しさん
垢版 |
2018/07/05(木) 11:43:41.72ID:IcGtf/nv
ageとく
2018/07/05(木) 21:26:50.59ID:CqUNBSEq
>>58
ごめんなさい。もうちょっと詳しく書いてもらってもいいですか。
できることならサンプルもちょろっといただけると嬉しいです。
61デフォルトの名無しさん
垢版 |
2018/07/05(木) 22:40:53.27ID:wMMrg/9A
>>60
https://ideone.com/55wqfj

これでいいかな?
2018/07/05(木) 23:07:07.10ID:sV2MZAFD
>>23
え?
2018/07/05(木) 23:42:10.60ID:CqUNBSEq
>>61
ありがとうございました。
2018/07/06(金) 01:11:38.30ID:i/IIW+Ad
う〜ん。演算子を自分で作れたら嬉しいんですけどね……。
2018/07/06(金) 07:17:03.39ID:JtODu3nj
>>64
クラス使えば演算子の定義もできるけど。
66遊園地 ◆ExGQrDul2E
垢版 |
2018/07/06(金) 14:48:21.33ID:SE3XEYsd
頼む! 助けてくれ!!

キーボードを、
エレコム ワイヤレスキーボード 静音タイプ メンブレン式 コンパクト ブラック TK-FDM078TBK
に変えたんだが、EnterとBackSpaceが押し難い。

どうしたら、良いんだ?
2018/07/06(金) 15:08:09.86ID:LdCqv7/c
キーの割り当て変えるツールで押しやすいキーと入れ替えれば当座はしのげるだろ
68デフォルトの名無しさん
垢版 |
2018/07/06(金) 15:17:47.09ID:odzQpd8G
ステマかよ
69デフォルトの名無しさん
垢版 |
2018/07/06(金) 15:33:29.76ID:SE3XEYsd
Firefoxのショートカット多様するから入れ替えるキーが思いつかん。
70デフォルトの名無しさん
垢版 |
2018/07/06(金) 15:38:38.61ID:odzQpd8G
キーボード追加汁
2018/07/06(金) 16:05:24.45ID:DEESRTvo
HHK使わないん?
2018/07/06(金) 16:09:00.39ID:24WPYeSf
そのうち慣れるよ、嫌なら他のキーボード買えばいいじゃん
押しやすいキーと入れ替えるという発想が信じられん バカなの?
2018/07/06(金) 16:33:27.16ID:SE3XEYsd
コンパクトで良いなー。と、思って買ったばかり何だよ。

スペース左側の変換をエンターにして、
カタカナひらがな の場所をバックスぺーすにした。
74デフォルトの名無しさん
垢版 |
2018/07/06(金) 16:56:40.78ID:odzQpd8G
>>72
https://pbs.twimg.com/media/DaUKL4lV4AEcjA5.jpg
https://pbs.twimg.com/media/DaUKL4lV4AEcjA5.jpg:large
75デフォルトの名無しさん
垢版 |
2018/07/06(金) 17:08:08.80ID:qtqoxO2d
これ面白いからおすすめ
https://goo.gl/U5BA1Y
2018/07/06(金) 19:06:08.08ID:cmD7yKAf
>>73
つemacs
課題は解決する。
2018/07/06(金) 23:42:38.37ID:W/isEwYg
enumerateとzipの合わせ技、快適すぎるw
range使ってインデックス作成していたのがアホみたい
2018/07/07(土) 23:15:16.85ID:7HLM3fyt
if num[temp] >0:
for i in range(result[temp]):
hoge1, hoge2 = hogehoge(a, b, c[temp])
result2 = hogex(d, hoge1, hoge2)

このようなループ処理を複数回(result回数分)行いたいです
多重forで書くととても重くなってしまうと思うのですが、何か良い高速化手法は無いですかね?

a, b, dは定数
cはリスト
hoge1, hoge2はint型の変数です
2018/07/08(日) 00:26:05.04ID:Jzinsuog
繰り返しhoge1、hoge2、result2に計算結果を書き込んでいるだけなのであれば、最後のただ1度だけ計算すればよいのでは?
質問は正確にー
2018/07/08(日) 03:29:49.37ID:/D8rnv+z
iがfor内部で使われてないように見えるから多分何かしら誤植があるんだろうけど
これだったら内包表記で書けるだろ
2018/07/08(日) 10:39:13.40ID:vD9CznKQ
根本的に高速化するなら行列形式で書くしかないけどな
82デフォルトの名無しさん
垢版 |
2018/07/08(日) 11:45:12.12ID:MJ8iSrG7
あほか
2018/07/08(日) 12:36:39.11ID:XRwcXxE1
>>> num = [-3, -2, -1, 0, 1, 2, 3]
>>> result=[i+1 for i in num]
>>> d = 3
>>> c = [i+10 for i in num]
>>> b = 2
>>> a = 1
>>>
>>> def hogehoge(a, b, c):
    return a+b, b+c

>>> def hogex(a, b, c):
    return a+b+c

>>>
>>> l = []
>>> for temp in range(len(num)):
    if num[temp] > 0:
        for i in range(result[temp]):
            hoge1, hoge2 = hogehoge(a, b, c[temp])
            result2 = hogex(d, hoge1, hoge2)
            l.append(result2)

            
>>> l
[19, 19, 20, 20, 20, 21, 21, 21, 21]
>>>
>>>
>>> [hogex(d, *hogehoge(a, b, c[temp])) for temp in [temp for temp in range(len(num)) if num[temp]>0] for i in range(result[temp])]
[19, 19, 20, 20, 20, 21, 21, 21, 21]
>>>
8478
垢版 |
2018/07/08(日) 13:38:26.20ID:1Fr6jxFu
すみません間違えていました
正確に言うと、hogehogeでなんらかの座標を算出して、hogexでopencvで図形をimgに描画
これをhpgehpgeの入力を順番に変えて数回ほど繰り返したいです

for i in range(max)
if temp[i].size:
for j in range(temp[i]):
hoge1, hoge2 = hogehoge(a, b, result[i][j])
img = cv2.hogex(d, hoge1, hoge2)

リストに出力しない場合は内包表記使えないですかね?
イマイチ内包表記の事分かってないです
2018/07/08(日) 14:09:53.71ID:ai00mC6I
それ支配的なのはhogexやhogehogeだよね?
ボトルネックを見つけないと高速化の意味ないよ
2018/07/08(日) 14:14:30.75ID:XRwcXxE1
hpgehpgeはどこにあるの?
あと5chだと半角スペースが消えるから全角スペースでインデント表現しないと
リストに出力しようがしまいが内包表記は使えるよ
2018/07/08(日) 14:29:35.70ID:XRwcXxE1
>>> [print('hoge') for i in range(3)]
hoge
hoge
hoge
[None, None, None]
>>>
リストに出力しなかったらNoneが入るだけ

[cv2.hogex(d, *hogehoge(a, b, reault[i][j])) for i in [i for i in range(max) if temp[i].size] for j in range(temp[i])]
これでいけるんじゃないかな?
8878
垢版 |
2018/07/08(日) 22:59:07.98ID:vTpYTVTg
ありがとございます
アドバイスを参考に試行錯誤してたのですがちょっと自分には難しかったです

img = cv2.hogex(img, d, hoge1, hoge2)

imgという変数(画像)が既に存在する際にそれの上に何かを描画する関数なのですが、
内包表記の中でimgに代入させるのは難しいですかね?

あと、内包表記で複数個の処理を行うことって出来ますか?
感覚的にはこの様な感じです
[hogehoge(a, b), hogex(c, d, e) for i in range(num)]
2018/07/08(日) 23:22:41.95ID:Jzinsuog
条件を後から追加すんなー。
後、得たい結果がリストでないと内包表記じゃ早くならんよ?
90デフォルトの名無しさん
垢版 |
2018/07/09(月) 00:06:53.03ID:U3tDSUR2
自作関数じゃないhogexは晒してもいいだろうに
そんなことしてると誰も答えなくなる
2018/07/09(月) 03:58:46.23ID:lNBlYhG9
そう言って答えなくなったためしはない
承認欲求過多のボウフラは次々に湧く
2018/07/09(月) 09:56:58.16ID:eu099A4d
>>88
>内包表記の中でimgに代入させるのは難しいですかね?
内包表記の中で代入はできません、どうしてもやりたいならクラスで
>>> class fuga:
def __init__(self):
self.img = 0
def hogex(self, a, b, c):
self.img = cv2.hogex(self.img, a, b, c)
return self.img

>>> f = fuga() #インスタンス作って、これを使う
[f.hogex(d, *hogehoge(a, b, reault[i][j])) for i in [i for i in range(max) if temp[i].size] for j in range(temp[i])]

>あと、内包表記で複数個の処理を行うことって出来ますか?
タプルかリストにまとめれば複数個処理できますよ
>>> [(print('hoge'), print('fuga')) for i in range(3)]
hoge
fuga
hoge
fuga
hoge
fuga
[(None, None), (None, None), (None, None)]
2018/07/09(月) 09:58:49.60ID:eu099A4d
>>> class fuga:
    def __init__(self):
        self.img = 0
    def hogex(self, a, b, c):
        self.img = cv2.hogex(self.img, a, b, c)
        return self.img
2018/07/09(月) 10:00:54.05ID:TMBQQ2rn
これだったらmapでできる
2018/07/09(月) 11:55:16.44ID:bJwhh199
hogehogeかhogexがボトルネックになってたらループをどうこうしても早くならないよ。
高速化するならまずボトルネックを特定しよう。
hogehogeやhogexがボトルネックで並列処理可能ならマルチスレッドで実行すれば少し早くなるかもね。
そもそもpythonみたいな実行速度よりコードの書きやすさを重視した言語で高速化するのは大変だよ。
pythonにちゃんとしたプロファイラーとかあるの?
2018/07/09(月) 12:08:42.40ID:EKBiOe/0
「ちゃんとした」とは
2018/07/09(月) 12:44:30.49ID:bJwhh199
プログラム内の各関数の実行時間を計って、ボトルネックになる場所を特定できれば、ちゃんとしたプロファイラだよ。
今ぐぐったら、cProfileとprofileっていうプロファイリングするモジュールがあるじゃん
2018/07/09(月) 18:23:50.78ID:nl/4tW7P
3.7にしたらscrapy (正確にはtwisted)が動かなくなった
2018/07/09(月) 21:13:16.40ID:lNBlYhG9
ナイス人柱(嘲笑)
2018/07/09(月) 21:57:16.39ID:mmm1tgmy
スクレイピングは興味はあるけど
別に収集したいデータがないから学習のモチベーション上がらない
2018/07/09(月) 22:43:52.82ID:eu099A4d
データ収集以外にRSSリーダー的なのも作れちゃうぞ
更新しているかどうか確認して更新してたら開くようにするとか

RSSに対応しているサイトはもちろんRSSリーダー使っているけど
対応していないサイトの方が多いんだよね、そういうのに超便利
2018/07/09(月) 22:53:12.46ID:mAItLGpx
RSS リーダーって未だに何なのか良く分からない。
2018/07/10(火) 00:30:11.92ID:JQDf+AP0
自分でサーバー持ってないとRSSリーダー自作してもあまり便利ではないからなあ
PCでもスマホでも閲覧履歴共有できるようになってるようなwebサービスが結局一番便利
2018/07/10(火) 07:05:32.75ID:skK1uyoo
見出しだけ拾ってきて表示してくれる機能

としてもイマイチな感じなんだが>RSS
2018/07/10(火) 07:29:56.38ID:xnT+bl2i
>>104
単に見出しを拾うのではなく、「更新されたら」見出しを拾うというのがRSSの役割
チェックしたいサイトが1つ2つなら手動で確認してもいいが10や20のサイトを一々巡回していられない
2018/07/10(火) 09:21:54.94ID:6FGIeywF
ニュースなら読みたいときに読むだけだから、更新されたかどうかは興味ない。
ブログとかかね?
発信したい人はTwitterなんかだろうし。
FBとかは通知もらえるし。
2018/07/10(火) 09:37:14.32ID:ul2eLyV6
ここでRSSの有用性について議論()すんのやめてくれる?
2018/07/10(火) 10:19:01.04ID:PHmC4ipr
RSSに対応していないため自作更新チェックスクリプトで更新チェックしているのはこれくらいかな(約400個)
 5ch
 ブログ
 無料で読めるWeb漫画(裏サンデーとか)
 気になる商品のアマゾンレビューが追加されたかチェック
 気になる商品の価格.comのレビューが追加されたかチェック
 各商品サイトで新商品チェック(カメラとかファーストフードとか)
 インスタグラム
 qiitaの記事
 Youtube(登録はしたくないけどチェックしたいチャンネルとか検索結果とか)

読みたくなった時に更新チェック走らせて、更新されたものだけ出てくるから
そこから興味が沸いたのだけ見る感じ
2018/07/10(火) 11:23:14.52ID:KyUi8F6Z
>>106
Twitterは気づかないで流れてしまうことがある
タイトルだけ全件チェックして自分で取捨選択したいニュースサイトとかたまにしか更新されないブログとかはwebのRSSサービスで勝手に取得してくれるのが便利
2018/07/10(火) 13:09:48.84ID:ul2eLyV6
あっそ
2018/07/10(火) 15:03:09.67ID:QC5JWrGp
ループ実行中にソースを書き換えるとそのまま反映してくれるんだがすごいな
2018/07/12(木) 06:53:51.94ID:1VFBi7mo
pythonistaって使用者少ないのですかね?
2018/07/12(木) 08:10:25.60ID:4rXUDbhg
少なくとも日本では痛い奴しか使ってないな
2018/07/12(木) 09:26:16.55ID:UvuEUTk4
日本では!!!!www
2018/07/12(木) 10:18:06.04ID:nDPgx9Ms
玩具でプログラムを書くのは小学生までだ
2018/07/14(土) 08:31:50.55ID:NEvYB3b/
また自分の回りを見ただけで正しいと思い込んでるの?
2018/07/14(土) 10:48:42.96ID:1NIDWWGu
メクラは目を治療してから書き込みな
118デフォルトの名無しさん
垢版 |
2018/07/15(日) 07:19:50.35ID:tdmRKlgm
自分好みのエロ画像をAIに学習させて
自動収集出来そうな気もするけど
要らない画像も大量に収集されそうな気もする
そうすると結局自分で選んだ方が良い気がしてくる
2018/07/15(日) 09:52:40.51ID:QImfuemI
バカだな。
エロ画像学習させて自動生成するんだよ!
2018/07/15(日) 11:08:52.23ID:WCfEKFtx
フェイクポルノなんてディープラーニングアイコラだからなあ
時代は自家製造に回帰しつつある
2018/07/15(日) 11:36:57.02ID:QImfuemI
たかがRGBの組み合わせだからいいんだよ。
122デフォルトの名無しさん
垢版 |
2018/07/15(日) 19:00:21.79ID:8/lDj5Bx
dictionaryの扱いについてわかる人いれば教えてください

以下の辞書オブジェクトが2つあるとして重複を考慮せずに単純に合体したものを返したいです。

dict1 = {‘A’: 1, ‘B’: 2}
dict2 = {‘A’: 9, ‘B’: 8}
=>
dict = { {‘A’: 1, ‘B’: 2}, {‘A’: 9, ‘B’: 8})

リストのappendと同じことがしたいのですが,
dictionaryにはappend要素がないため困っています。
2018/07/15(日) 19:05:39.00ID:GnA/ld69
>>122
> =>
> dict = { {‘A’: 1, ‘B’: 2}, {‘A’: 9, ‘B’: 8})
それ例えば ‘A’: 1 が欲しい時はどうするつもりなの?
124デフォルトの名無しさん
垢版 |
2018/07/15(日) 19:08:02.28ID:z9dis41F
君のdictは辞書になってないが?
2018/07/15(日) 19:08:32.50ID:chucpUaP
もともとの動機は?
そっちを聞かせてもらったほうが解決早そう
126デフォルトの名無しさん
垢版 |
2018/07/15(日) 19:11:49.70ID:8/lDj5Bx
>>123, 124, 125
あ、そういえばそうですね。。
失敬。出直してきます。。
2018/07/15(日) 19:28:38.99ID:dRosDKqj
彼はスレが止まると問題を出して盛り上げようとする謎謎クン
でもちょっとアレだから問題になってない問題を出しちゃうんだ
2018/07/15(日) 19:33:50.85ID:WCfEKFtx
はい滑ってますね
陰キャが冗談を言おうとしてもこんなもんです
言い慣れてないから
2018/07/15(日) 19:39:43.35ID:dRosDKqj
>>128
大丈夫だよ、滑ってるとか滑って無いとか誰も気にしてないから
>>120もみんなスルーしてくれたじゃん、大丈夫だから!
2018/07/15(日) 22:09:19.69ID:8NDHn2sc
重複を考慮せずにっていうから、要素は元から重複しない仮定があるのかと思いきや、例に挙がってるのが普通に重複してるから意表を突かれるよね。
2018/07/16(月) 00:23:51.32ID:9a71kq0g
>>122
c++にはmultimapというのがあって、一つのキーに複数の値を持たせることができる。
キーが重複しているdictionary二つを組み合わせてmultimapのようなものを作ろうということかな?
ちょっとググったら、collections.defaultdictでそういうことができるっぽいぞ
2018/07/16(月) 00:49:59.13ID:4DAq7auC
知らんけど新しいdictのキーを配列なりsetなりにすればいいのでは
2018/07/16(月) 00:50:57.09ID:4DAq7auC
keyじゃなくて値だ
2018/07/16(月) 07:54:45.96ID:+Psc5GAR
>>122は多分こういう事がやりたいんだろうと勝手に推測して俺用に書いたメモを貼っておく

>>> d1 = {'k1': 1, 'k2': 2}
>>> d2 = {'k1': 100, 'k3': 3, 'k4': 4}
>>> d1.update(d2) #スペルミスに注意。updataではなくupdate
>>> d1
{'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4} #値がかぶるときはupdateの引数で上書きされる
135デフォルトの名無しさん
垢版 |
2018/07/16(月) 11:43:26.50ID:KKQqxuup
こうしてくれるやつない?
d3 = {'k1': [1, 100], 'k2': 2, 'k3': 3, 'k4': 4}
2018/07/16(月) 11:46:38.49ID:plGwUTF3
>>135
値が数だったりリストだったりすると使いづらいよ。
全部リストにしたほうがいい。
2018/07/16(月) 12:37:25.37ID:D0PjcW4c
>>134
updata なんて単語ないのにどうしてミスるのか謎。
2018/07/16(月) 13:12:24.71ID:tIxG6Ljl
>>137
謎だからミスってなるんじゃん?
2018/07/16(月) 13:24:20.19ID:PAsk0bs7
謎でないミスとは
2018/07/16(月) 14:02:13.62ID:+Psc5GAR
>>137
データはdata、日付はdateなわけだから
データ更新といわれたら up+data って発想にならね?
2018/07/16(月) 14:07:48.17ID:rAvhQng0
>>140
データ更新=up+data ってなら
     更新=up か?
暑さで脳みそやられちゃったのかな
2018/07/16(月) 14:38:59.21ID:D0PjcW4c
「新しいデータ、アップしといて」ってのは分からんでもない。
2018/07/16(月) 14:55:24.57ID:GVNh7z7o
どこかで一度読み間違えてずっとそうだと思いこんでたってことは、まあなくはない。

> updata
うん、ないわ
2018/07/16(月) 15:14:06.48ID:nI1ZYiFc
>>142
そのあっぷは
あっぷろーどの略なんじゃ
145デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:12:28.77ID:Od4s/iux
downdate
2018/07/16(月) 19:32:18.79ID:rAvhQng0
hakodate
147デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:58:15.14ID:7DuH0wkA
すみません教えてください
anacondaのcloudに登録しようとしたら
IPアドレスがアクセス禁止されてるって出るんですがなぜでしょうか
2018/07/17(火) 10:18:21.33ID:BxHOLtgl
セキュリティ担当者に聞いてください
149デフォルトの名無しさん
垢版 |
2018/07/17(火) 15:18:24.48ID:+kxKOOfA
中国のIPじゃ無理
2018/07/21(土) 10:12:54.65ID:GzQQQ0Dr
N枚のシーケンス画像から1枚の画像を作ることを考えていて、画素毎に異なるシーケンス画像の値を参照したいと考えています
シーケンス画像のオブジェクトが
shape=(N,640,480,3) dtype=uint8
画素ごとにどのシーケンスから値を選択するかのオブジェクトが
shape=(640,480) dtype=int
となっています(値は0~N-1)

LUTのようにして一度に画素をすべて参照するにはどのように記述したらよいでしょうか
2018/07/21(土) 10:34:37.16ID:51ft4y34
>>150
openCV
152デフォルトの名無しさん
垢版 |
2018/07/21(土) 11:01:09.18ID:JzufiDOi
マルチすな
2018/07/21(土) 11:07:14.69ID:O8QI/iof
Pandas
2018/07/21(土) 12:45:45.34ID:IIkAtUxj
あちらでまともな回答が得られなかったのでこちらにきました
2018/07/21(土) 13:50:19.17ID:xFXA2Npp
Pandas
2018/07/21(土) 16:38:28.48ID:j78KnOti
みんなのPythonをやったあとにおすすめな参考書を教えて下さい
157デフォルトの名無しさん
垢版 |
2018/07/21(土) 21:44:44.82ID:nYV0zQCT
Pandas
2018/07/21(土) 21:44:58.83ID:naub5pUA
Pandas
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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