Python関連のことを調べてみた2020年03月11日

Python関連のことを調べてみた2020年03月11日

pandasの`df.index = List[…]`的な代入文が嫌い

# pandasの`df.index = List[…]`的な代入文が嫌い

pandasにおいて、データフレームの行名や列名を設定・更新するとき、`df.index = List[…]`的な代入操作は普遍的に行われている。つまり、

“`python
df = pd.DataFrame(np.random.randn(5, 3))
print(df)
# 0 1 2
# 0 0.221652 -0.243116 -0.551044
# 1 0.285863 -0.596317 0.070156
# 2 1.404026 0.362331 -0.237264
# 3 0.320011 1.144342 1.560148
# 4 -1.386724 -0.234210 -0.488311
“`

のようなデータフレームがあったときに、

“`python
df.columns = [‘A’, ‘B’, ‘C’]
print(df)
# A B C
# 0

元記事を表示

コサイン類似度

##はじめに
リコメンドシステムを作っている時に、類似度はどうせユークリッド距離を使っているものだと思っていました。しかし、レコメンドシステムの実装例を眺めていたら、ユークリッド距離ではなく、コサイン類似度というものを用いてました。気になったので、記事にしてみます。

##コサイン類似度とは
コサイン類似度は、ベクトル同士の成す角度の近さを表現するため、三角関数のコサインの通り、1に近ければ類似しており、0に近ければ似ていないことになる。
![スクリーンショット 2020-03-11 10.24.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554960/b843bf19-897b-1912-a4be-4b71c1527fae.png)

[出典]:https://blog.brainpad.co.jp/entry/2017/05/23/153000

以下の式で計算できる。
![スクリーンショット 2020-03-11 10.30.13.png](https://qiita-image-stor

元記事を表示

pygribでオープンできないGRIB2形式の気象データをnetCDFに変換して可視化する

# pygribでオープンできないGRIB2形式の気象データをnetCDFに変換して可視化する
## はじめに

面的立体的な広がりを持った気象データのフォーマットは「GRIB2」形式が業界標準です。
GRIB2形式については@e_toyodaさんによる詳しい紹介があります。
[WMO(世界気象機関)の格子データ形式GRIB2について](https://qiita.com/e_toyoda/items/ce7497e1a633b16f1ff1)

GRIB2形式のファイルからデータを読み出すための様々なツールがあります。
pythonならばpygribというモジュールを利用できます。

ところが、全国合成レーダーや推計気象分布などは全国1km間隔でのデータであることからデータ量が大きく、GSMやMSMとは違った、日本気象庁が独自に指定している圧縮形式が用いられています。
これがpygribでサポートされていないようで、オープンできないデータが存在しています。

*全国合成レーダは以下に解説があります。
[1kmメッシュ全国合成レーダーGPV](http://www.jmbsc.or.j

元記事を表示

ディープラーニングで肉体変化のタイムラプスを劇的に見やすくした

# はじめに

 トレーニー(筋トレを愛している人)の多くが習慣化している「自撮り(肉体)」。トレーニング後にパンプした肉体を撮りためて、後で見返すのが至福のときですよね。さらに、撮りためた画像をタイムラプスのようにアニメーションで表示させたら、より筋肉の成長が手に取るようにわかりますよね!
 この記事はディープラーニングを使って、肉体のタイムラプスを劇的に見やすくした話を書いています。

## まずは結果から

![ezgif.com-optimize (3).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22648/830a231f-59aa-a858-914c-ca8923b4f85d.gif)
2017/12~2020/3の体の変化

※データサイズの都合上、画像をクロップ&圧縮しています。

## 概要

 撮りためた画像からタイムラプスの作成を行いました。しかし、画像間のズレが気になるため、手作業で補正を行い、なめらかなタイムラプスを作成しました。さらに、手作業の手間を省くために、ディープラ

元記事を表示

requests

“`py
#pip intall requests
import requests

payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}

#1秒経過してもサーバーから結果が返ってこないときはエラーが出る
r = requests.get(‘http://httpbin.org/get’, params=payload, timeout=1)
#r = requests.post(‘http://httpbin.org/post’, data=payload)
#r = requests.put(‘http://httpbin.org/put’, data=payload)
#r = requests.delete(‘http://httpbin.org/delete’, data=payload)

print(r.status_code)
print(r.text)
print(r.json())
“`
出力:

“`text
200
{
“args”: {
“key1”: “value1”,
“key2”: “

元記事を表示

urllib.request

“`py
import urllib.request
import json

payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’}

url = ‘http://httpbin.org/get’+ ‘?’ + urllib.parse.urlencode(payload)
print(url)
with urllib.request.urlopen(url) as f:
#バイナリで返ってくるのでデコードし、jsonから辞書型に変換
print(json.loads(f.read().decode(‘utf-8’)))

payload = json.dumps(payload).encode(‘utf-8’)
req = urllib.request.Request(
‘http://httpbin.org/post’, data=payload, method=’POST’)
with urllib.request.urlopen(req) as f:
print(json.loads(f.read().decod

元記事を表示

言語処理100本ノック-50:文区切り

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第6章: 英語テキストの処理」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch6)の[50本目「文区切り」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec50)記録です。
難しかった49に比べて非常に簡単で小休止といった感じです。正規表現を使って文を区切ります。

# 参考リンク

|リンク|備考|
|:–|:–|
|[050.文区切り.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/06.%E8%8B%B1%E8%AA%9E%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E5%87%A6%E7%90%86/050.%E6%96%87%E5%8C%BA%E5%88%87%E3%82%8A.ipynb)|回答プログラムのGitHubリンク|
|[素人の言語処理100本ノッ

元記事を表示

3.正規分布をニューラルネットワークで!

#はじめに
シリーズ第3回です。

前回はニューラルネットワークが、与えられた10個の数値の平均と標準偏差を出力するように学習できることが確認できました。

今回は、正規分布データを与えて、正規分布の元となっている3つのパラメーターを出力するように学習できるかどうかを試します。

##正規分布
正規分布はたった3つのパラメーターからできています。ここでは3つのパラメーターを、µ、σ、kとします。

1. µは、正規分布の中心軸のx座標
2. σは正規分布がどれくらい幅広い分布であるかの尺度
3. kは縦方向にどれくらい拡大するかの倍率

正規分布の一般式は、

“`math
y=k \times\frac{1}{\sqrt{2\pi\sigma^2}}exp{\left(-\frac{
(x – \mu)^2
}{
2\sigma^2
}\right)}
“`
です。式をにらめば、3つのパラメ

元記事を表示

heatrapyで1.5次元非定常伝熱解析をやってみる

opensourceのheatrapyを使用して一次元非定常伝熱解析をやってみました。
最近、仕事で熱関係をやっています。

## 環境構築
“`
pip install heatrapy
“`

## やれること
以下の事が出来ます。かなり色々できますね!

– 非定常
– 非線形
– 材料を任意で追加可能
– コンポーネント間の接触
– 境界条件は、温度指定か断熱条件
– 任意の位置での系外への熱移動(入熱、出熱)← 熱伝達率や輻射での熱の出入りを設定可能

####【モデル】
– Ta,insulations :境界条件
– Q : 熱の授受(任意の位置で可能)
– h : 接触条件(任意の位置で可能)
– Q0 : 温度に依存する熱の授受(任意の位置で可能)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274127/f11ac327-999b-bf46-906a-3eb75a6d0a15.png)

## 論文
理論的なものは下記論文にまとまってます。ありがたや

元記事を表示

json

“`py
import json
j = {
“employee”:
[
{“id”: 111, “name”: “Mike”},
{“id”: 222, “name”: “Nancy”}
]
}

print(j)
print(“###########”)

#python内で読み書きするときはsがつくので注意
print(json.dumps(j))
a = json.dumps(j)
print(‘@@@@@@@@@@’)
print(json.loads(a))

#ファイルを読み書きするときはsがつかない
with open(‘test.json’, ‘w’) as f:
json.dump(j, f)
print(‘###########’)
with open(‘test.json’, ‘r’) as f:
print(json.load(f))
“`
出力:

“`text
{‘employee’: [{‘id’: 111, ‘name’: ‘Mike’}, {

元記事を表示

Django 3.0 でDjango REST Swaggerを使用すると発生するエラーの解消

# 概要
Django 3.0 で、Django REST Swaggerを使用すると発生するエラーの解消

# 環境
– AWS EC2
– Python 3.6.10
– Django 3.0.4
– Django REST framework (https://www.django-rest-framework.org/)
– Django REST Swagger (https://django-rest-swagger.readthedocs.io/en/latest/)

# エラーメッセージ

http://localhost:8000/swagger/ にアクセスすると下記のエラーが発生する

“`
django.template.exceptions.TemplateSyntaxError: ‘staticfiles’ is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
i18n
l10n
log
rest_framework
static

元記事を表示

NNにペナルティ実装

“0からわかるdeep learning”の3層NNのRelu前の出力がある実数領域しかとらないようなペナルティを設定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/398155/a8aeaff7-74df-2e8d-5534-21245d11e85e.png)

元記事を表示

Pythonの二次元配列の罠【配列のコピー】

基本的なことなんだろうけど、理解してないせいで詰まったのでメモ。

# まえがき

pythonで配列を作るのは簡単でいいですね。

“`python
a = [0] * 2
print(a) # [0, 0]
“`

二次元配列も作ってみましょう。

“`python
b = [[0] * 2] * 2
print(b) # [[0, 0], [0, 0]]
“`

あら便利。じゃあ操作してみましょう。

“`python
b[0][1] = 1
“`
printしてみましょう。

“`python
print(b) #[[0, 1], [0, 1]]
“`
んん??????
# 結論
こう書きましょう。

“`python
c = [[0] * 2 for i in range(2)]
print(c) # [[0, 0], [0, 0]]
c[0][1] = 1
print(c) # [[0, 1], [0, 0]]
“`

# なんでダメなの?
id()関数を使ってみましょう。

“`python
b = [[0] * 2] * 2
print(id(b

元記事を表示

Pandasでよく使うコードをまとめてみた

kaggleを始めてデータサイエンスに触れる機会が増えてきたため、pythonを使う私は必然的にpandasを用いてデータの処理をすることになりました。
今回は個人的によく使うコードをまとめています。ほぼ自分用のメモになりますが、誰かのお役に立つこともあるだろうかと思いqiitaにまとめて投稿することにしました。
他にもっと良い記法があるなど、何かしらのアドバイスや感想がございましたらコメントで教えていただけると幸いです。また、汎用的なコードはあれば随時更新していきたいと思います。

# DataFrame
データの作り方。特にどれが良いということは無いですが、2通りで同じデータを作ります。自分がやりやすい方を場合によって使い分けてください。出力は同じです。
## method 1
“`python
index = [‘a’,’b’,’c’]
columns = [‘A’,’B’,’C’]
inputs = [[1,2,1],[3,4,3],[5,6,5]]
df = pd.DataFrame(columns = columns,index = index)
for i,column

元記事を表示

property フィールドでデシリアライズする(問題未解決)

次の用なモデルを定義する:

class Drink(models.Model):
name = models.CharField()

def get_volumes(self):
return [int(dc.volume) for dc in self.drinkcontainer_set.all()]

def set_volumes(self. volumes_list):
for vol in volumes_list:
dc = DrinkContainer(drink=self, volume=vol)
dc.save()

volumes = property(get_volumes, set_volumes)

class DrinkContainer(models.Model):
drink = models.ForeignKey(Drink)

元記事を表示

Python手遊び(if文の1行表記)

#この記事、何?
いまだにPython書き慣れない。。。
表題の1行表記で「???」ってなって詰まったので備忘録を少々。。。

#つまり何?
Pythonで1行でif文書けるじゃないですか。こんなの。

“`python
# (こんなの)
>>> print(‘True’) if True else print(‘False’)
True
“`

それを使ってこれが書きたかった。

“`python
# (これ)
>>> if True:
… para = ‘True’
… else:
… para = ‘False’

>>> para
‘True’
>>>
“`

で、書いてみたらエラーになった。

“`python
>>> para = ‘True’ if True else para = ‘False’
File “

元記事を表示

kerasのインストール

ちょっと気になった機械学習のソフトウェア
kerasをインストールして見ようと思います。

# Keras
Kerasは、Pythonで書かれたオープンソースニューラルネットワークライブラリです。
MXNet、Deeplearning4j、TensorFlow、CNTK、Theanoの上部で動作することができます。
今回はTensorFlowを使います。

## 1,TensorFlowのインストール
TensorFlowとは、Googleが開発しオープンソースで公開している
機械学習に用いるためのソフトウェアライブラリです。

まずこれをインストールします。

“`bash:ターミナル
pip3 install tensorflow
“`

## 2,kerasのインストール
肝心のkerasをインストールします。

“`bash:ターミナル
pip3 install keras
“`

# pip

pipはPythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システムです。
多くのPythonパッケージは、Python Package I

元記事を表示

Pythonでファイルに書き込まれたJSON文字列をパースする

Pythonでファイルに書き込まれたJSON文字列をパースする方法を確認したのでメモ。

## 方法(`json.load()`)

このようなファイルなら、

“`data.json
{
“data”:{
“a”: “こんにちは”,
“b”: 123
},
“c”: true
}
“`

`open()`で取得したデータに対し**`json.load()`**を利用すればJSONパースできる。

“`python
import os
import json

raw = open(‘data.json’, ‘r’)
type(raw)
#

parsed = json.load(raw)
type(parsed)
#

parsed
# {‘data’: {‘a’: ‘こんにちは’, ‘b’: 123}, ‘c’: True}
“`

## 駄目な方法(`json.loads`)

– `json.loads`は、TextIOWrapp

元記事を表示

Pythonで毎日AtCoder #1

### はじめに
今回から、python3で競プロの問題(AtCoder)を解く毎日という企画をしようと思います。問題の選択は、[AtCoder Problems](https://kenkoooo.com/atcoder/#/list/tax_free)のRecommendationsからです。

#### 目的

– レートを上げる。
– 初見問題への対応力をつける

### #1
[問題](https://atcoder.jp/contests/arc008/tasks/arc008_1)

**考えたこと**
2WAしました。場合分けを考える問題が苦手なことが分かりました。
この問題は、n mod(10)の大きさで場合分けしました。問題を読むと、N個以上買うのにいくらかかるかを答えるので、Nを越えた数を買ってもよいことが分かります。個別に買った方が安いのか、まとめて買った方が安いのかをn mod(10)で比較すると次のようになります。

“`
n mod(10), 個別, 個別とまとめて買ったときの差
1 , 15 , 85
2 , 30 , 70
3 , 45 , 55
4

元記事を表示

春休みの宿題

#春休みの宿題一覧

春から情報科学研究科に進学するのでこの春休みに準備しなければいけないことをまとめておく。

##プログラミング言語

– [C言語本格入門](https://www.amazon.co.jp/C言語本格入門-基礎知識からコンピュータの本質まで-種田-元樹/dp/4774196169)
– [C++プログラミング〈Vol.1〉 (Computer Science Textbook)](https://www.amazon.co.jp/C-プログラミング%E3%80%88Vol-1〉-Computer-Science-Textbook/dp/489471115X)
– [C++プログラミング〈Vol.2〉 (Computer science textbook)](https://www.amazon.co.jp/C-プログラミング%E3%80%88Vol-2〉-Computer-science-textbook/dp/4894711168)
– [エキスパートPythonプログラミング改訂2版](https://www.amazon.co.jp/エキスパートPytho

元記事を表示

OTHERカテゴリの最新記事