ためすう

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: 終了

参考

Ruby で casecmp を使ってみる

2019-09-02

やったこと

Ruby で casecmp を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

調査

$ irb
...
irb(main):007:0> words = ['abc', 'Abc', 'ABC', 'aaa']
=> ["abc", "Abc", "ABC", "aaa"]
irb(main):008:0> words.each do |r|
irb(main):009:1*   p r.casecmp('abc')
irb(main):010:1>   p 'abc'.casecmp(r)
irb(main):011:1>   p 'end!!!'
irb(main):012:1> end
0
0
"end!!!"
0
0
"end!!!"
0
0
"end!!!"
-1
1
"end!!!"
=> ["abc", "Abc", "ABC", "aaa"]

参考