Pythonのお勉強 Part62
■ このスレッドは過去ログ倉庫に格納されています
★当スレにRubyのソースコード類を書くことを禁ず★
☆Ruby等、Pythonではないプログラミング言語での回答類を書くのも禁止
☆「Ruby では」「Rubyでは」をNGワード登録推奨
◆エラーを解決したいときはエラー文(勝手に省略禁止)と
環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと
◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩壊するので
↓等のソースコードうp用サイトに貼ってきてくだしあ
(スクリーンショットをimgur等にうpる「横着」禁止)
ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try (旧try.jupyter.org)ちょっとめんどうそう。
◇Pythonオフィシャルサイト
http://www.python.org/
◇まとめwiki
ttp://python.rdy.jp/
●関連スレ●
くだすれPython(超初心者用) その44【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1563969768/
〇前スレ
Pythonのお勉強 Part61
http://mevius.5ch.net/test/read.cgi/tech/1563622784/
次スレの建立は>>985あたりが挑戦する。 [EOF]
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured >>541
日曜大工で壁に棚造って強度足りなくて
いざ物載せたら落ちるって事故が良くあったあらしいが
プログラミングでも同じこと
自己責任で済んでるうちは良いが他人に迷惑掛けないレベルには配慮が必要 例えが糞すぎる
日曜大工でもの落ちるのがよくあったって意味不明 この程度の意味が取れないとかのレベルで絡んでくるなよ… 日曜大工と同じで考えるなら
失敗から勉強していく方向じゃないのか >>553
転職でなんとかなるかどうかは年齢にもよる 画像処理で450万もらってたら30代後半でも転職余裕だろ 客先に行ってるんですけど、
セキュリティがちがちのノートPCしか使えません。
そのノートPCにソフトはインストールできないのですが、
ネットにはつながって、ブラウザは使えるので、
自社のPCサーバーにPythonをインストールして
ノートPCのブラウザから
Pythonのちょっとしたテストや開発を
できるようにしたいと思っています。
こういうのってできるのでしょうか? セキュリティガチガチって事は何処に
アクセスしてるかも知られるし
個人のサーバとかあからさまに怪しまれると
思うのだけど、そこの言い訳は用意できるの?
技術云々よりコンプラの問題だと思うけど そのノートにPython3が入ってるなら、
vimでコードを書いてコマンドラインでテストすればいいんじゃね
ソフトにこだわって自宅サーバーにアクセスして下手に怪しまれるよりはマシ
技術的にはアドオンでも余裕で出来るけど 会社のサーバーに外からのコード実行できるようにするのはセキュリティ的にどうなのよ >>562
簡単なテスト位ならすぐに出来るよ
webサーバーたてる
オレオレでいいからsslにする
textareaのスクリプトをpostして実行結果を返すページを作成する
ページにはパスワードを掛けるがワンタイム的なものにする
セキュリティーやらコンプライアンスやらは知らん
本格的な開発となったら相当ハードルが高いと思う
簡単なテスト位ならプログラム実行できるウェブサービス使ったらいいんじゃないの
https://wandbox.org/ 俺はGCPのGoogle Cloud Shellで遊んでるわ
code-server入れてWeb版VSCode使ったり >>562
thinクライアントかな技術的にはできる
セキュリティとか会社のルールとかそこら辺をどうするか
仮想PCにシンクライアントからアクセスして使うとかはよくあると思う あれWeb版VSCodeきてたの?普通にRDPで使ってた さっさと自社事業系へ転職したほうがいいよ
俺も経験あるから気持ちはよくわかるが、後で振り返ると足掻くだけ本当に時間の無駄だった 脱初心者向けの勉強って何見て何やればいいかな
基礎は入門書で一通り学んでクラスとかの作り方や概念は知ってるけど
実際にクラスをどういう時に使えばいいか分からない
関数とか内部論理が汚いけどどうリファクタリングすればいいかイマイチ分かってない
デザインパターン使えば綺麗になるとか聞くけどなにそれ美味しいの?状態
とりあえず目的を達成するプログラムは超汚いのを組めるってレベルなのです 何がしたいのかによるだろ
アドホック分析とか個人的なデータ処理とかでとりあえず動きゃいいんなら作法なんかどうでもいい
複数人でシステム作るんならさっさと就職して現場で叩かれて覚えればいい
OSS開発に参加したいんならOSSのソースを読めばいい pyinstallerってどうやってスクリプトをバイナリ化してるんだろうか
謎 >>572
んー 現場が底辺請負だから周りも同レベルぐらいなんだけど
きちんとした知識と技術を身に付けたいんだよ OSSに参画すればいいのかな
Pythonに限らず未経験者向けとかの初心者用の教材はあふれてるけど
中級者向けの教材って殆どないよね
現場でのノウハウとか個人スキルに直結する要素だから
試行錯誤で身に付けるしかないの? >>574
じゃあまずは超定番だけどリーダブルコードを読んできなさい
テクニックを覚えてもコードの品質は上がらん >>571
1. リファクタリング (2000年の旧版で十分、Ruby版はクソ、JS版もエッセンスは旧版と同じ)
2. Clean Code (2008年の旧版で十分)
3. Head First デザインパターン
どれも初心者向けでコードサンプルはJava
古いから今どきこんな書き方しねーよってのはあるかもしれないが
リファクタリング方法やデザインパターンに関わる考え方はOO言語を使う上での基礎なので
それを把握できてないと思うならそこから始めるのがいい
上の本の内容を把握できたらPythonのイディオムやらパターンをオンラインで学んだり
標準ライブラリやメジャーなライブラリのコードを読んだりして少しずつ自分の道具箱を拡張していく
Python詳しくやりたいならPython in a Nutshellってのがおすすめだけど日本語になってるかは知らない >>575 >>576
どうもありがとう
教えて貰った書籍をベースに学習してみます
OO言語に関してもまだまだ理解不足なのは実感しているので
きちんと把握しないとね... テストを書く
フレームワークを使ってみる
ICMP、TCP、UDP、IP、HTTP、DNS等のプロトコルの勉強
とか >>571
PEP8はシッカリ覚えてるんけ?
まだなら読んどけ
でもって自作の超汚いブツを
半年から2年間熟成させてから
読み返せ
過去の自分に殺意が湧くからw >>573
インターネッツ検索すると
> Pythonを起動するためのexeファイルに、Pythonのモジュールやスクリプト類を内包したZIPファイルを背負わせる
って出てきた
-onefileオプションを外してみたら、
どうなってるかちょっとは分かるかもしれないかもしれない。 pythonのその手の仕組みってすごく原始的だったりするよな。
venvで実行環境一式まるまるコピーされてるのを見てずっこけた。 『実践 Python 3』がもっとも力になった。難易度は突き抜けてるけどな
てか、これ以上のレベルだと書籍化されない印象 >>580-581
けっこう原始的なんだな
Pythonのコードをバイナリにトランスパイルでもしてるのかと思った >>583
オライリー?
ゆうめい。だが、(もぅ)古い。。。 numpyのインデックスについてなんですが、配列の値を調べてなんらかの条件で
bool型の配列を返す関数がfunc1とfunc2の2種類あるとして、
以下のように使った場合元のaに対応したbool型配列を得るうまい方法ってなにかあります?
a = np.random.rand(100)
b = func1(a)
c = func2(a[b])
自分で考えたら以下のようになったんですがもっと良い方法はないのか悩んでいます。
e = np.arange(len(a))[b][c]
f = np.zeros(len(a), dtype=bool)
f[e] = True >>586
np.logicaland(func1(a),func2(a))
短く書くならこうか
func2が実行される回数増えちゃうけど >>587
ありがとうございます。
小出しで申し訳ないのですが、func2はfunc1の結果で抽出した配列入れる必要があります。
そんな感じで意図が分かりやすい方法があると嬉しいです。 配列の中の値ではなく配列自体が必要なのか
なら最初のままでいいじゃん >>571
オブジェクト指向入門-第2版-原則・コンセプト 4798111112
オブジェクト指向入門-第2版-方法論・実践 4798111120
初版の方が良いかも知れないが
どれも初心者向けでコードサンプルはEiffel
古いから今どきこんな書き方しねーよってのはあるかもしれないが
リファクタリング方法やデザインパターンに関わる考え方はOO言語を使う上での基礎なので
それを把握できてないと思うならそこから始めるのがいい
上の本の内容を把握できたらPythonのイディオムやらパターンをオンラインで学んだり
標準ライブラリやメジャーなライブラリのコードを読んだりして少しずつ自分の道具箱を拡張していく
Python詳しくやりたいならPython in a Nutshellってのがおすすめだけど日本語になってるかは知らない 機械学習関係です。
以下のコードでtrain_df,test_dfの内容が変更されないのですが何がいけないのでしょうか?
import pandas as pd
import numpy as np
train_df = pd.read_csv('/home/weekender/work/titanic/train.csv')
test_df = pd.read_csv('/home/weekender/work/titanic/test.csv')
combine = [train_df, test_df]
for df in combine:
df = df.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
print(train_df)
print(df) なるほど。
train_dfとtest_dfで同じこと書きたくないんですけどeval以外で手段ありますか? >>595
mapとかlist comprehensionとか
df1 = pd.DataFrame([1, 2, 3, 4, None])
df2 = pd.DataFrame([None, 0, 1, 2, 3])
[df1, df2] = [df.dropna() for df in [df1, df2]]
(機械学習関係ないやーん) Pythonって
覚えること多くて
大変です
つか、ムズイんすけど?
あんたらはさくっと覚えたの? >>600
最初に学ぶ言語がpythonだと落とし穴たくさんあるよね
直感的でわかりやすいという利点はあるけど >>600
単位がかかってたのでhissiですただ >>600
Pythonが初めてのプログラミング言語なら、そりゃ覚えることは多いだろうね
自分はCやJavaに挫折して、VBAは何とか知っているというレベルの者だが
Pythonはサクっと覚えられた
こんなシンプルで多機能な言語があるのかって驚いたね
データをリスト・タプル・辞書に入れて組み込み関数や標準ライブラリで処理しつつ、流れをforやifで制御する
この範疇でプログラミングするなら最高に簡単な言語だと思うね
Webとか今流行りのAIとか、そういうのはそれで飯食ってる連中向けの高度なテーマだから
趣味でやってる人は手を出しちゃいけないよ Pythonを学ぶのにオブジェクト指向を理解していない奴が多すぎる
データ分析に使うだけなら別にいいけど >>604-605
おれはC的発想から抜けろ!とよく怒られてるけど
簡単なWebツールはできてる(幾つか運用中)ず・・・ Pythonは言語的に手続き型の考え方が強いから
オブジェクト指向を身につけたいなら他の言語もやったほうがいい
他のOO言語から入るとPythonだと手続き型脳を強制される場面が多くて最初はイライラした pythonでも、昔はクラスに集約していたところを
モジュールで集約して関数を使い回す機会が増えてきたから
昔に比べればオブジェクト指向の重要性もだいぶ落ちてきたのかな そもそもスクリプト言語って短いコードをササっと書いてササっと実行してナンボだから
事前に綿密なクラス設計を必要とするOOとは相性が良くない
自分はOOは概念くらいしか知らないから今まで一度もクラスを書いたことはないけど、
困ったことは一度もない GoにもRustにもJuliaにもクラスは無い
オブジェクト指向は廃れてるよ 昔のOOPはオブジェクトが主でオブジェクトに振る舞いを実装するという考え方だったんだが、
Goなど最近の新しい言語ではあくまで関数が主であり、
オブジェクトは複数の関数のグループにおいて共有される単なる文脈に過ぎない、という解釈が主流になりつつある
Pythonはクラスこそあるが、OOPについては昔からわりと後者に近い立場だ Pythonは他言語に比べればVBAに近い存在と思っておけば間違いない
CやVBAから来た人は同じ手続き型で馴染みやすい
どの言語にも長所短所あるがPython使ってるやつは短所を理解できてないやつが多くて辟易する オブジェクト指向で書いた方がきれいにいくパターンも多いから
そこは自分の引き出しとタスクの兼ね合い次第だろう
そもそもコードを綺麗に書くメリットが薄い職場もたくさんあるけどね Pythonはムズイ!
>>612
VBAは検索&コピペでいろいろ作りました。
Cもちょっとだけやりました。
でも、Pythonとはずいぶんと違うように思います。
データ型がムズイです。
DataFrameというのを作ると行数番号とか、
列名がかってにはいってくるのですよ。
ついていけないです!
とりあえずこれに慣れないといかんので
検索&コピペでちょこちょこと作ってみてます。
目標はサイキットラーンというのでSVRという分析をやるのです。
頑張ります! 俺は周囲の誰からも、馬鹿か天才かわからん!と
言われてます。
俺は簡単なことがなかなか理解できないんですよ。
でも一度理解してしまえば、そこから光速なんですよね。
だからそこまで頑張ります! DataFrameはPandasの話だから
Pythonがムズイというのとはちょっと違うと思うんだが
まいっか
Pandasは公式のGetting Startedを読めば理解できる
VBAをExcelで使うのにRange, Cells, Row/Columnを理解する必要があるように
PandasはDataFrame, Series, Indexの関係を最初に理解する必要がある python自体は毎日使ってるけど、pandas は二、三か月使わなかったりするんで
使おうとしたときにあれ?って思うことが多いな 機械学習の型調整はプログラミング初心者にはシビアかもね
型の受け渡しで、CatBoostのコーディング以上に苦労する機会はそんなにない 最初はpandasでサーチしたりデータフレーム生成してたけど
配列でも同じこと出来るんじゃね?ってなってからは一切使わなくなった
他の言語で書くときに流用もできないし。Pythonしか使わないってならアリかも 時系列データを扱わないならpandas使わなくてもええんちゃう
てか他言語でコード流用って外部モジュール使ってたらどれも無理でしよ 他言語なら他言語の有用なモジュールを使えばいいじゃない
機械学習をPythonで行うのが主流になったのは
有用なモジュールが多数あったのも一つの要因
逆を言えば次世代の機械学習用言語に関しても
有用なモジュールが存在しなければ主流たりえない pandasがなくてもいい状況はそりゃあるだろうね。
でも、CSV読み書きしたりマスタテーブルとデータテーブルの結合をしたり、ヒストグラム作ったり、統計値出したりするのにいちいち自分でそういうコードを書くのは時間の無駄でしょ。
書き方はかなり違うけどRDBMSに対するSQLでの操作みたいなことが出来るのがpandasのいいところだと思うんだが。 Pythonって口語で言うとき〜パイっていう用語が多すぎて恥ずかしい anaconda3 python3.7 ですが
既に入っているパッケージの入手元を調べる方法は何がありますか
conda で入れたかどうか
pip で入れたかどうか
等々です >>637
thx
conda list で pip の方は <pip> で区別されて一緒に出て来ました ライブラリをちょっと利用するだけですが
python何級ですか jupyter notebookにて、
cellを実行すると、
In [*]となったままになり、
実行されていない(?)ような感じです。
cellを追加してprint文を試してみても、
In [*]となったままで何も変化ありません。
原因としてどういうことが考えられますか?
どういう対処がいいのでしょうか?
とりあえずPCを再起動してみます。 Djangoを勉強し始めようと思うのですが今なら2.2と3.0どっちで勉強するべきですか? まだ2.2でいいんじゃない?
といってもまだ自分は3の魅力がわからないが ソースコードを確認したくて、pyiファイルに行きついたのですが
def bind(self, address: Union[_Address, bytes]) -> None: ...
というコードに行き着きました。
pyiファイルは型とreturnを指定しているとわかりましたが、最後の「...」の意味がわかりません。
省略という意味なら、def bind()のコードはどこに書かれているのでしょうか。
以下のライブラリを調べているときにつまづきました。
import socket
socket.bind(('127.0.0.1', 50007)) >>646
pyiファイルはタイプチェッカー用にタイプヒントが書いてあるだけでソースではない
IPythonでimport socketして
socket?? でsocketモジュールのソースが見れる
socket.socket?? でsocketクラスのソースが見れる
継承元の_socketを見たければ
import _socketして_socket?? とか _socket.socket??とすれば中身の確認ができる
ただCで書かれてるモジュールだとソースは通常PC内に無いので見たければGithubへ >>647
ありがとうございます。
IPythonで調べたところ以下がわかり、_socket.pydは中身が見れないのですね。
In [5]: _socket??
Type: module
String form: <module '_socket' from 'C:\\Users\\★\\Anaconda3\\DLLs\\_socket.pyd'>
File: c:\users\★\anaconda3\dlls\_socket.pyd
githubで調べたところ、関数名やファイル名が違うため、若干不安がありますが
これが_socket.pydの中身かなと考えています。
https://github.com/python/cpython/blob/3.8/Modules/socketmodule.c define文だけで350行ある8000行のCコードは
さすがに有り難すぎて目がつぶれる static struct PyModuleDef socketmodule = {
PyModuleDef_HEAD_INIT,
PySocket_MODULE_NAME,
↓
PySocket_MODULE_NAME は socketmodule.h で定義されていて _socket
↓
static PyMethodDef sock_methods[] = {
{"_accept", (PyCFunction)sock_accept, METH_NOARGS,
accept_doc},
{"bind", (PyCFunction)sock_bind, METH_O,
bind_doc},
↓
static PyObject *
sock_bind(PySocketSockObject *s, PyObject *addro)
{ >>651
ありがとうございます。
こういうファイル名、関数名の指定の仕方をするんですね。
詳しく知りたくなったのでC言語ちゃんと勉強しようと思います! ■ このスレッドは過去ログ倉庫に格納されています