>>> import numpy as np >>> a = np.empty((0,10)) >>> a array([], shape=(0, 10), dtype=float64) >>> a = np.append(a,[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], axis=0) >>> a array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]]) >>> a= np.append(a,[ [0, 1, 2, 3, 4, 5, 6, 7, 8,9]], axis=0) >>> a array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.], [0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]]) >>> a= np.append(a,[ [0, 1, 2, 3, 4, 5, 6, 7, 8,9]], axis=0) >>> a array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.], [0., 1., 2., 3., 4., 5., 6., 7., 8., 9.], [0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]]) >>>
https://note.nkmk.me/python-numpy-split/
>>> import numpy as np >>> data_size = 10 >>> x = np.random.choice(data_size,10,replace = False) >>> x array([8, 6, 1, 5, 2, 7, 9, 4, 0, 3]) >>> f = lambda x: x**2.0 >>> y = f(x) >>> y array([64., 36., 1., 25., 4., 49., 81., 16., 0., 9.]) >>> np.stack([x,y],axis=1) array([[ 8., 64.], [ 6., 36.], [ 1., 1.], [ 5., 25.], [ 2., 4.], [ 7., 49.], [ 9., 81.], [ 4., 16.], [ 0., 0.], [ 3., 9.]]) >>> np.stack([x,y]) array([[ 8., 6., 1., 5., 2., 7., 9., 4., 0., 3.], [64., 36., 1., 25., 4., 49., 81., 16., 0., 9.]]) >>>
分割は、
>>> X,Y=np.split(z,2,axis=1) >>> X array([[8.], [6.], [1.], [5.], [2.], [7.], [9.], [4.], [0.], [3.]]) >>> Y array([[64.], [36.], [ 1.], [25.], [ 4.], [49.], [81.], [16.], [ 0.], [ 9.]]) >>>
>>> 20 / 3 6.666666666666667 >>> 20.0 / 3.0 6.666666666666667 >>> 20.0 // 3.0 6.0 >>> 20 // 3 6 >>>
proxies = { "http": "http://username:password@proxy:8888", "https": "http://username:password@proxy:8888" } r = requests.post( 'https://labs.goo.ne.jp/api/morph', data=payload.encode('utf-8').decode('latin-1'), headers=headers, proxies=proxies, verify=False)
などでOK。SSLのチェックはverify=FalseでOFFにしている。また、プロキシサーバにしたPCのFW設定も要チェック*1。
Pythonの関数で複数の戻り値を返す方法 | note.nkmk.me
タプル型というので返すと、複数の戻り値を返せる。コレめっちゃ便利なのでは。。
printf("Switchの状態:{0}".format(isClick)) #formatの第一引き数を表示 printf("Counter: [{0:3.1f}]".format(counter/interval)) # 全体で3桁、小数点1桁
って感じに文字列のformat関数というのでフォーマット可能。
Python3におけるformat形式を自分のためにまとめてみた件 - どこかに向かうらしい話
key = 'temperature_130010.json' city_code = key[len('temperature_'):-5] -> 130010
設定ファイル (ConfigParser) - Python入門から応用までの学習サイト
詳しく書いてあります。。
long dateLong = 1480232552192L; DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); Date date = new Date(dateLong); System.out.println(df.format(date)); System.out.println(date.getTime());
実行結果
2016/11/27 16:42:32.192 1480232552192
from datetime import datetime print(datetime.fromtimestamp(1480232552192/1000.0))
実行結果
$ python my_aws_utils.py 2016-11-27 16:42:32.192000
$ cat requirements.txt requests pytz $ sudo pip3 install -r requirements.txt -t ./ ←(もしくはpip) Downloading/unpacking requests (from -r requirements.txt (line 1)) Downloading requests-2.12.1-py2.py3-none-any.whl (574kB): 574kB downloaded Downloading/unpacking pytz (from -r requirements.txt (line 2)) Downloading pytz-2016.7-py2.py3-none-any.whl (480kB): 480kB downloaded Installing collected packages: requests, pytz Successfully installed requests pytz Cleaning up...
$ ls -lrt 合計 80 ..... -rw-r--r-- 1 pi pi 14 11月 21 23:56 requirements.txt drwxr-xr-x 4 root root 4096 11月 21 23:57 requests drwxr-xr-x 2 root root 4096 11月 21 23:57 requests-2.12.1.dist-info drwxr-xr-x 4 root root 4096 11月 21 23:57 pytz drwxr-xr-x 2 root root 4096 11月 21 23:57 pytz-2016.7.dist-info $
ちなみに awsにアップするzipを作る際は、このディレクトリに移動して
$ zip -r xxx.zip ./*
でよいと思います。
returnList = [] codes = createCityCodes() ← 配列がふたつあったばあい、 names = createCityNames() ← こちらはnames[i]とかでアクセスしたい。。 for i,code in enumerate(codes): returnObj = { 'cityCode': code, 'cityName': names[i] } returnList.append(returnObj)
みたいな感じに扱える。もしくは、
import itertools ..... for code,name in itertools.zip_longest(codes,names): returnObj = { 'cityCode': code, 'cityName': name } returnList.append(returnObj)
こんな感じで、複数の配列をおなじfor文で回すことも可能*2。。。
「"""」や「'''」で始めて終わることで、その間の文字列はそのまま扱われるようになります。
text1 ="""1行目 2行目 3行目""" text2 ="""1行目 2行目 3行目""" print ("----") print (text1) print ("----") print (text2) print ("----")
結果は
---- 1行目 2行目 3行目 ---- 1行目 2行目 3行目 ----
このとおり。文字列内の改行はそのまま改行と解釈され、さらにインデントもそのままタブとして反映されるということですね。ちなみに、複数行コメントを書く際にこれを使って書いているコードもありました。
''' /* * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. ..... */ '''
こんな感じで。なるほどね。。
Linux上で、sudo kill した場合、try/finallyのfinallyがよばれないっぽい。フォアグラウンドで実行してctrl+cした場合は問題ないのですが。。
import sys,signalしといて
def cleanup(*args): sys.exit(0) signal.signal(signal.SIGINT, cleanup) signal.signal(signal.SIGTERM, cleanup)
とか書いておくと、よばれるようになりますが、コレでいいのかな。。。
myutils.py に定義された
def cleanup(xx):
などのメソッドを呼び出すには、呼び出し側で
from myutils import cleanup,sysout
と宣言しておけば、
cleanup("hoge")
などと直接呼び出せる。
PythonにはJavaでいう
public static void main(String[] args){ ... }
みたいな概念がなく、
sudo python3 xxx.py
と呼び出すと、先頭から順次実行されるっぽい。
いわゆるmainメソッドを作るやり方は以下の通りです。
import sys def main(args): メイン処理 if __name__ == "__main__": main(sys.argv)
「 __name__ 」 には、スクリプトとして直接呼び出されたときのみ*3、"__main__" と入っているらしいので、それを判定して main メソッドを呼び出すとすれば public static void main の完成です。ついでにコマンドライン引数を上記のように渡せば、引数も同様にJavaぽくあつかうことができます。あ、引数は0番目はプログラム名なので、1番目からが実際の引数です。
参考
Yosemiteを使ってるとバージョンが2.7系で、、3.x系を使いたい場合。
などを参考に、Python環境を管理するツールを入れます
$ brew install pyenv $ echo 'export PYENV_ROOT=$HOME/.pyenv' >> ~/.bash_profile $ echo 'export PATH=$PYENV_ROOT/bin:$PATH' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile $ pyenv install 3.5.1
なんかエラーが出たら、たいがい $ xcode-select --install これもしくは、 $ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target / (これはmojaveのばあい) $ pyenv shell 3.5.1 $ python --version Python 3.5.1 $
$ pyenv versions <-インストールされているモノの一覧。 * system (set by /Users/xxxx/.pyenv/version) 2.7.11 2.7.12 3.5.1 $
pyenvが必要かどうかフローチャート - Qiita この辺見ると、いるかどうかよく考えて、、、という流派もあるようです。。わたくしは切替方法わかんなかったのでやりましたが、自己責任で。
r = requests.get('https://xxx/yyy.json') result = json.dumps(r.json(),ensure_ascii=False, indent=4, sort_keys=True, separators=(',', ': ')) print(result)
requests は pip(かpip3)などでインストールされてる前提で。。
[Python] JSONを扱う - YoheiM .NET
この記事は
現在のアクセス:4697