ためすう
PIL で画像を読み込んでみる
2019-09-11やったこと
PIL ライブラリを使い、画像を読み込んで表示してみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
Pillow をインストールする
$ conda install Pillow
バージョン確認
$ conda list Pillow
# packages in environment at /anaconda3:
#
pillow 6.1.0 py36hb68e598_0
pil-image-read.py
from PIL import Image
img = Image.open('./sample.jpg')
img.show()
参考
Python で読み込み対象のディレクトリを追加する
2019-09-10やったこと
読み込み対象のディレクトリを追加します。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
ファイル構成
$ tree
mylib/
└── myclass.py
sys-path.py
ファイルの内容
myclass.py
class ddd:
def __init__(self):
pass
sys-path.py
import sys
sys.path.append('../')
### print(sys.path)
from mylib.myclass import ddd
print(ddd())
ファイル実行
$ python sys-path.py
<mylib.myclass.ddd object at 0x104e8a978>
参考
np.argmax を使ってみる
2019-09-10やったこと
np.argmax を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
>>> b = [0, 5, 2, 3, 4, 5]
>>> argmax(b)
>>> np.argmax(b)
1
>>> a = np.random.random(20)
>>> a = a.reshape(4, 5)
>>> a
array([[0.49340889, 0.29507221, 0.56335119, 0.83046262, 0.7579564 ],
[0.10089851, 0.43410885, 0.5479143 , 0.55304626, 0.92677723],
[0.21139963, 0.06923998, 0.15509698, 0.33185919, 0.70188447],
[0.58790613, 0.74386543, 0.25404441, 0.67682735, 0.45157852]])
>>> np.argmax(a)
9
>>> np.argmin(a)
11
>>> np.argmax(a, axis=0)
array([3, 3, 0, 0, 1])
>>> np.argmax(a, axis=1)
array([3, 4, 4, 1])
axis を指定しない場合、flatな配列としてみたときの indexが返されます。
また、axis=0
で列ごと、axis=1
で行ごとに見ます。
参考
numpy.random.randn を使ってみる
2019-09-09やったこと
numpy.random.randn を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
numpy.random.randn は、標準正規分布を返すとあります。
Return a sample (or samples) from the “standard normal” distribution
標準正規分布とは、平均0、標準偏差1の正規分布のことです。
>>> np.random.rand(2,3)
array([[0.60826951, 0.10515517, 0.69150681],
[0.40838286, 0.34473871, 0.09018369]])
>>> np.random.rand(2,3)
array([[0.31227934, 0.93830731, 0.42201233],
[0.54689324, 0.99169398, 0.89075624]])
>>> np.random.rand(2,3)
array([[0.01817165, 0.78406566, 0.6051451 ],
[0.43414395, 0.94710879, 0.75136773]])
>>> np.random.rand(2,3)
array([[0.22214423, 0.68967167, 0.25798399],
[0.17294866, 0.62487288, 0.46928062]])
参考
Python で os.path.splitext を使ってみる
2019-09-09やったこと
os.path.splitext を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
調査
>>> import os
>>> os.path.splitext('hogehoge/hoge2/sample.jpg')
('hogehoge/hoge2/sample', '.jpg')
>>> os.path.splitext('hogehoge/hoge2/sample.jpg')[0]
'hogehoge/hoge2/sample'
>>> os.path.splitext('hogehoge/hoge2/sample.jpg')[1]
'.jpg'
>>> os.path.splitext('~/.bashrc')
('~/.bashrc', '')
ファイルのパスと拡張子を分割します。
参考
numpy.random.choice を使ってみる
2019-09-08やったこと
numpy.random.choice を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
0以上5未満の数字を3個選びます。
>>> import numpy as np
>>> np.random.choice(5, 3)
array([2, 0, 4])
>>> np.random.choice(5, 3)
array([4, 4, 4])
>>> np.random.choice(5, 3)
array([1, 1, 2])
>>> np.random.choice(5, 3)
array([0, 2, 0])
また、確率も指定できます。
>>> np.random.choice(5, 3, p=[0.1, 0.1, 0, 0, 0.8])
array([4, 4, 4])
>>> np.random.choice(5, 3, p=[0.1, 0.1, 0, 0, 0.8])
array([1, 4, 4])
>>> np.random.choice(5, 3, p=[0.1, 0.1, 0, 0, 0.8])
array([4, 4, 4])
>>> np.random.choice(5, 3, p=[0.1, 0.1, 0, 0, 0.8])
array([4, 4, 0])
実行する度に、変わっていることが分かります。
参考
numpy.zero_like を使ってみる
2019-09-08やったこと
numpy.zero_like を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
[3, 4, 5]])
>>> np.zeros_like(x)
array([[0, 0, 0],
[0, 0, 0]])
x と同じ形で、更に0で初期化されている行列になっています。
参考
numpy.zeros を使ってみる
2019-09-08やったこと
numpy.zeros を使ってみます。
確認環境
$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'
調査
>>> import numpy as np
>>> np.zeros(5)
array([0., 0., 0., 0., 0.])
>>> np.zeros((3, 3))
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
>>> np.zeros((4, 2))
array([[0., 0.],
[0., 0.],
[0., 0.],
[0., 0.]])
参考
Google Colaboratory でファイルをダウンロードする
2019-09-08やったこと
Google Colaboratory 上に作成したファイルをダウンロードします。
調査
output.zip ファイルがあるとします。
!ls
出力結果
output.zip
ファイルをダウンロードする
from google.colab import files
files.download("output.zip")
参考
Ruby で pry を使ってみる
2019-09-02やったこと
gem の pry を使ってデバッグしてみます。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
調査
gem のインストール
$ gem install pry-byebug
ruby ファイルの準備
ruby-pry.rb
require 'pry'
class Sample
attr_accessor :hoge, :fuga
def initialize
@hoge = 'hogehoge1'
@fuga = 'fugafuga2'
end
def hey
'hey'
end
end
s = Sample.new
binding.pry
p s.hey
s.hoge = 'hogehoge'
p 'end'
ファイル実行
$ ruby ruby-pry.rb
From: /path/ruby-pry.rb @ line 19 :
14: end
15:
16: s = Sample.new
17: binding.pry
18:
=> 19: p s.hey
20: s.hoge = 'hogehoge'
21: p 'end'
[1] pry(main)> step
From: /path/ruby-pry.rb @ line 12 Sample#hey:
11: def hey
=> 12: 'hey'
13: end
[1] pry(#<Sample>)> next
"hey"
From: /path/ruby-pry.rb @ line 20 :
15:
16: s = Sample.new
17: binding.pry
18:
19: p s.hey
=> 20: s.hoge = 'hogehoge'
21: p 'end'
[1] pry(main)> s.hoge
=> "hogehoge1"
[2] pry(main)> next
From: /path/ruby-pry.rb @ line 21 :
16: s = Sample.new
17: binding.pry
18:
19: p s.hey
20: s.hoge = 'hogehoge'
=> 21: p 'end'
[2] pry(main)> s.hoge
=> "hogehoge"
[3] pry(main)> exit
"end"
- step: 関数の中に入る
- next: 次の行を実行
- exit: 終了