0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NumPyの使い方

Last updated at Posted at 2021-10-17

1 はじめに

NumPyは配列計算を行うライブラリです。ベクトル、行列演算を行うことができます。
ここでは、NumPyのloadtxt関数の使い方について説明します。

2 環境

VMware Workstation 15 Playerで作成した仮想マシン(1台)を使用しました。
CentOSの版数は下記のとおりです。

CentOSの版数
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011

カーネルの版数は下記のとおりです。

カーネルの版数
[root@server ~]# uname -r
4.18.0-240.el8.x86_64

3 Anacondaのインストール

ここでは、Anacondaをインストールして、Anacondaの仮想環境で各種動作確認をしました。
DockerKubernetesのように、既存の環境に影響を与えることなくライブラリのインストール、
削除ができるので便利だと思います。
Anacondaのインストール方法は、Anacondaのインストール方法を参照してください。

4 事前準備

Anacondaの仮想環境で、テスト用のcsvファイルを作成します。
1列目が月、2列目が月の最高気温を表しています。

月別の最高気温
(base) [root@server ~]# cat data.csv
1,10
2,11
3,15
4,18
5,20
6,25
7,32
8,35
9,30
10,25
11,20
12,10

5 loadtxt関数の使い方

loadtxt関数のパラメータは、以下のとおりです。

構文
numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None, *, like=None)

5.1 delimiterの使い方

delimiterでデリミッターを指定します。デフォルトは空白です。
ここで使用するテスト用ファイルは、デリミッターとして,を使用しているので、
delimiterには、,を指定します。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np

data = np.loadtxt('data.csv',delimiter=',')
print(data)
実行結果
(base) [root@server ~]# python3 tp.py
[[ 1. 10.]
 [ 2. 11.]
 [ 3. 15.]
 [ 4. 18.]
 [ 5. 20.]
 [ 6. 25.]
 [ 7. 32.]
 [ 8. 35.]
 [ 9. 30.]
 [10. 25.]
 [11. 20.]
 [12. 10.]]

5.2 dtypeの使い方

dtypeは、データ型を指定します。
デフォルトはfloat型です。ここでは、配列に格納するデータをint型に変換してみます。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np

data = np.loadtxt('data.csv',delimiter=',',dtype=int)
print(data)

配列に格納された数がint型になっていることがわかります。

実行結果
(base) [root@server ~]# python3 tp.py
[[ 1 10]
 [ 2 11]
 [ 3 15]
 [ 4 18]
 [ 5 20]
 [ 6 25]
 [ 7 32]
 [ 8 35]
 [ 9 30]
 [10 25]
 [11 20]
 [12 10]]

5.3 skiprowsの使い方

skiprowsは、skiprowsで指定する行数を読み飛ばすパラメータです。
ここでは、最初の5行を読み飛ばしてみます。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np

data = np.loadtxt('data.csv',delimiter=',',skiprows=5)
print(data)

最初の5行が読み飛ばされていることがわかります。

実行結果
(base) [root@server ~]# python3 tp.py
[[ 6. 25.]
 [ 7. 32.]
 [ 8. 35.]
 [ 9. 30.]
 [10. 25.]
 [11. 20.]
 [12. 10.]]

5.4 usecolsの使い方

usecolsは、使用する列を指定するパラメータです。

0列目(月)を表示するスクリプトを作成します。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np

data = np.loadtxt('data.csv',delimiter=',',usecols=(0))
print(data)

0列目の月の列だけが表示されたことがわかります。

実行結果
(base) [root@server ~]# python3 tp.py
[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12.]

次に、0列名、1列目を表示するスクリプトを作成します。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np

data = np.loadtxt('data.csv',delimiter=',',usecols=(0,1))
print(data)
実行結果
(base) [root@server ~]# python3 tp.py
[[ 1. 10.]
 [ 2. 11.]
 [ 3. 15.]
 [ 4. 18.]
 [ 5. 20.]
 [ 6. 25.]
 [ 7. 32.]
 [ 8. 35.]
 [ 9. 30.]
 [10. 25.]
 [11. 20.]
 [12. 10.]]

5.5 unpackの使い方

unpackは、配列を転置するためのパラメータです。
転置とは行と列を入れかえることです。
unpack=Trueとすることで、転置が行われます。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np

data = np.loadtxt('data.csv', delimiter=',', unpack=True)
print(data)

デフォルトだと12行2列の行列ですが、unpack=Trueと指定したことで
2行12列に変換されたことがわかります。

実行結果
(base) [root@server ~]# python3 tp.py
[[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12.]
 [10. 11. 15. 18. 20. 25. 32. 35. 30. 25. 20. 10.]]

6 Matplotlibによるグラフ化

6.1 棒グラフの作成方法

Matplotlibを使って、月の最高気温のデータを棒グラフで表してみます。
キャプチャ.PNG

サンプルコードは、以下のとおりです。

サンプルコード
(base) [root@server ~]# cat tp.py
import numpy as np
import matplotlib.pyplot as plt

month, temp = np.loadtxt('data.csv', delimiter=',', unpack=True)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.bar(month, temp)

サンプルコードが読み込むデータは以下のとおりです。

月の最高気温のデータ
(base) [root@server ~]# cat data.csv
1,10
2,11
3,15
4,18
5,20
6,25
7,32
8,35
9,30
10,25
11,20
12,10

6.2 積み上げ棒グラフの作成方法

名前とテスト(国語、算数、理科)の合計得点を積み上げ棒グラフで表示してみます。

キャプチャ.PNG

ソースコードは以下になります。

サンプルコード
import numpy as np
import matplotlib.pyplot as plt
 
name = ['kato', 'suzuki', 'tanaka']
kokugo = np.array([90, 40, 10])
sansu  = np.array([10, 20, 90])
rika   = np.array([30, 30, 80])
   
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.bar(name, kokugo, label='kokugo')
ax.bar(name, sansu, bottom = kokugo, label='sansu')
ax.bar(name, rika, bottom = kokugo + sansu, label='rika')

ax.legend()
plt.show()

Z 参考情報

Z.1 ネット情報

NumPy
numpy.loadtxt
Using NumPy's loadtxt method
PandasとNumPyの違いと使い分け方

Z.2 参考図書

Pythonコードレシピ集

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?