ITの隊長のブログ

ITの隊長のブログです。Pythonを使って仕事しています。最近は機械学習をさわりはじめたお(^ω^ = ^ω^)

ここ最近でPythonの覚えたこと

ざつーな俺用まとめ。見てもいいことないのでブラウザバック。

  • python2.7.13
  • Interactiveで試した

やったことをどっかに残して置きたかっただけなのと、それぞれ個別に記事を投稿するのがめんどかったから。はい。

dictionaryのkey一覧がみたい

でかいレスポンスdictionaryを受け取ったときに、探索したいときに使った。

>>> d = {'a': 'a', 'b': ' b'}
>>> d.keys()
['a', 'b']

www.pythonweb.jp

attributeの一覧がみたい

よく知らないライブラリのクラスをObject化したときに、何を持っているのかを確認したときに便利。

>>> class Test():
...     def test():
...             pass
...
>>> test = Test()
>>> dir(test)
['__doc__', '__module__', 'test']

www.lifewithpython.com

ファイルの存在確認

そのまま。assertでチェックするといいかも。

>>> import os
>>> path = os.path.join('./', 'test', 'test.json')
>>> assert os.path.exits(path), 'File does  not exists.'

ファイルやディレクトリの有無を調べる - Python Tips

文字列フォーマット

format()とか使わずにやった。

>>> 'test %s' % ('test')
'test test'
>>> 'test %s, %s' % ('test2', 'test1')
'test test2, test1'

dackdive.hateblo.jp

jsonを扱う

import jsonで色々できる

>>> import json

dictionaryをjson文字列にする

>>> d = {'a': 'a'}
>>> json.dumps(d)
'{"a": "a"}'

json文字列をdictionaryにする

unicodeになる。

>>> a_json_string = json.dumps({'a':'a'})
>>> a_json_string
'{"a": "a"}'
>>> a = json.loads(a_json_string)
>>> a
{u'a': u'a'}

json文字列をファイルに書き込む

ややこしいけど、json.dump()でできる。

# 書き込み
>>> f = open('test.json', 'w')
>>> json.dump(json.dumps({'a':'a'}), f)
>>> import os
>>> os.path.exists('./test.json')
True
>>> f.close()
# 読み込み
>>> f = open('./test.json', 'r')
>>> json_file = f.read()
>>> json_file
'"{\\"a\\": \\"a\\"}"' 
# これはよくわかっていないのだが、最初の読み込みはなぜかstring
>>> j = json.loads(json_file)
>>> j
u'{"a": "a"}'  # string
# json stringをさらに読み込み後、dictionaryとなる
>>> jj = json.loads(j)
>>> jj
{u'a': u'a'}  # dictionary

18.2. json — JSON encoder and decoder — Python 2.7.13 documentation qiita.com iyukki.blog56.fc2.com stackoverflow.com

Python2系でハマるstring, unicode辺り

毎回はまる。辛い。

qiita.com qiita.com

Python packageの作り方

セキュアなファイルや、画像とかの格納場所はどこにすればいいのか。適当にmodule以下にstaticディレクトリを作って、そこで管理しやすいように作っている。

qiita.com

リモートワークをちょっと経験中

リモートワークの会社ではありませんが、諸事情あって、只今リモートワーク中です。

以前こんな本を読んだことがあります。

好きな企業さんの1つにソニックガーデンという会社があります。特徴として全社員リモートワークで働いています。

この本読んだときに、特に思ってもいませんでしたが、改めてはっとしたことをここにメモする。

リモートワークはお互いに信頼がないと(多分)うまくいかない

このご時世、社員通しは電話やメールでのやり取りではなく、ほとんどがチャットサービスを使ってやり取りしていると思う。

仕事の内容で指示、指摘などあると思うけど、書き方によっては「ムッ?(^ω^#」って思うことが多々ある。

テキストだけでは相手の気持ちをうまく汲み取れないことも起因していると思うが、それは人それぞれなので誰にでも起こうる話じゃないかなと思う。

それを避けるには、事前に仲の良いメンバーであったり、やり取りしている人間を知っている、または信頼しているのであれば、特に何も思わずスルーすることができる。

とあるチャットに新規に入ると、仲の良いメンバーは遠慮のないテキストを送りお互いやり取りしているが、それは信頼が築けているからだと思う。そうではない新規に入った自分から見ると「もうちょっと柔らかく書いたらいいのに」と心配になってしまった。その辺でズレが発生するのだろう。

これでもしトラブルになったら本当にどうでも良いことだと思う。直接面と向かってやればうまくいくことがリモートワークだとうまくいかなくなる。時間の無駄だし、ストレスにもなる。恐ろしい…

リモートワーク導入する前に、ちゃんと築かないといけないものがあるんだなと思った。

リモートワークは寂しい

「雑談ができない」とよく聞く。「はっはっはっ、雑談なんてそんなしていないし大丈夫大丈夫」と思いきや。

思った以上にさみしい。

オフィスにいるとき、たまたま居た人とあいさつ交わしたり、そこでちょっとだべったりするのって雑談に入るし、また雑談でヒントになって仕事がいくつか解決したことあるなって今更ながら思った。

あと、自分が作ったプログラムや、仕事がうまくいったときに「褒めてー!」って自慢するのがチャット越しというのがちと違和感。。。目の前や隣にいたらすぐできるのになんでだろ?

リモートワークは運動不足

自分だけかもしれませんが、一歩も外にでなくても仕事ができる。これまじビビる。

「リモートは仕事をやりすぎてしまう。仕事のやり過ぎに注意」って書いてあってそんな馬鹿なwって笑ってたけど、これ本当っぽい。パソコンが目の前にあって、ネットが繋がればいつまでもできてしまう。朝仕事しよって思ったらいつの間にか夜中ですよ。

そんなこんなで、動いていないからお腹もあまり減らないし、もともとお菓子とかもそんな食べる人間でもないので、部屋から全然でなくていいんですよ。ということで絶賛運動不足中です。これは困った。

区切りを付けて、走りにいったほうがいいんだろうな。頑張ろう。

雑感

改めてソニックガーデンすごいなと思った。

今度ちゃんとレビュー書く。

最近のことをつらつらと

  • 4ヶ月前74kg。8kg痩せた。現在66kg
    • お金なかったから牛丼やらラーメンやら酒飲まなくなったら痩せた
    • 卵と豆腐ばっか食ってたら痩せた
    • 沖縄いるとき頑張って走っていたけど、結局のところ食事制限でどうにかなるのね
    • 今お金あるから戻らないようにジムで調整中
  • データサイエンティストってどんな感じ?
    • 前処理9割 + 分析1割で地味な感じです
    • 統計の知識学べるでしょ?と思いきや、入社してからほぼディープラーニングしかしていないので統計基礎弱い
    • ディープラーニングはハイパーパラメータとの戦い
    • 最近数式でロジック考えてたらハッとした。苦手だったのに。これが環境変化か
    • でもまぁ、Pythonは楽しい。Rはさわる業務が来ていないのでほとんど触っていない

そろそろ沖縄帰ります。

【Python】Tensorflowでresizeした画像をmatplotlibで表示したい

>>> import matplotlib
>>> import matplotlib.pyplot as plt
>>> import tensorflow as tf
>>> tf.__version__
'1.1.0'
>>> matplotlib.__version__
'2.0.0'

Tensorflowの画像前処理関数って結構豊富っぽくて使いたいって練習しようとしてた。

tf.image.resize_images  |  TensorFlow

単純にresizeしたいと思って↑の関数を使う。

# image -> opencvとかで読み込んだ画像
>>> tf_image = tf.image.resize_images(image, [100, 100])
>>> session = tf.Session()
>>> with session.as_default():
...     output = tf_image.eval()
...
>>> plt.imshow(output)
>>> plt.show()

そしたら、反転?みたいな画像がでてきて困惑。

なーぜー?

stackoverflow.com

matplotlibでtensorを表示するためには、tf.float32でcastしたあとに255.0で割ってあげればおk

>>> image = tf.cast(image, tf.float32) / 255.0
>>> tf_image = tf.image.resize_images(tf_image, [100, 100])
>>> session = tf.Session()
>>> with session.as_default():
...     output = tf_image.eval()
...
>>> plt.imshow(output)
>>> plt.show()

これで閲覧できた。

そもそもmatplotlibじゃなくて、tensorboardでみればいいのでは?

・・・・。(試してないからわからんけど)