Python の list と numpy.ndarray にまつわる備忘録。扇形の内部を塗りつぶす時に使ってみようとして少しはまったので。ついでにグラフを描くときの点の間引き方などもついでに備忘録として。
必要なモジュールの import
import numpy as np
リストに要素を追加する
リストに要素を追加するには +
が使える。
a = list(range(1,6))
print(a)
type(a)
リスト a
の最初に 0
を追加する例。
[0] + a
リスト a
の最後に 6
を追加する例。
a + [6]
リストの各要素を2倍するつもりで,以下のように書くと,全然違う意味になる。
a*2
a*2 = a + a
のこと。
a + a
リスト a
の全ての要素を2倍するには…
# Python 的?な方法で全ての要素を2倍する
[2*n for n in a]
配列への変換
どうしても各要素を2倍したいのなら,いっそのこと np.array()
でリストから配列へ変換してしまう手もある。
A = np.array(a)
print(A*2)
配列に要素を追加する
NumPy の配列に要素を追加するには np.append()
を使う。
b = np.arange(1, 6)
print(b)
type(b)
print(np.append(0, b))
print(np.append(b, 6))
NumPy の配列に要素を追加するつもりで,間違って +
を使うと,全然違う意味になる。(各要素に数値を足してしまう。)
print(b + 6)
リストへの変換
どうしても +
を使って要素を追加したいのなら,いっそのこと .tolist()
で配列からリストに変換してしまう手もある。
b.tolist() + [6]
要素を間引きする(飛ばす)
データをグラフにするときなど,データ点があまりに多い場合は適宜間引いてグラフにする場合があるだろう。そんなときに,リストや配列の要素を間引きする例。
たとえば要素を2つごとに(1つ飛ばして)表示するには…
print(a[::2])
print(b[::2])
上記のような手軽な方法を知らない場合は,以下のように基本?に戻って少し回りくどいほうほうで… (私もかつては知らなかったので,こんな回りくどい方法で間引いているページがある。)
[a[i] for i in range(0, len(a), 2)]
スライス
より一般的には a[start:stop:step]
のようにしてリストや配列の一部を間引いて取り出すことができる。上記の a[::2]
は start
と stop
を省略し,step = 2
とした例になる。
step
を省略すると,step = 1
となる。
# 最初の2つの要素を取り出す
print(a[:2])
print(b[:2])
# 最後の2つの要素を取り出す
print(a[-2:])
print(b[-2:])
逆順に
step
の値をマイナスにすると,逆順に表示する。
print(a[::2])
print(a[::-2])
print(b[::-2])
# [::-1] とすると逆順に表示
print(a[::-1])
print(b[::-1])
# 逆順にする別解
list(reversed(a))