Python学習【365日チャレンジ!】315日目のマスターU(@Udemy11)です。
そろそろ年賀状を出さないと行けない時期ですが、年賀状は書き終えましたか?
書き終えるというより、印刷が終わって、投函したかというのが正しいのかもしれませんが、私は文字の練習として、毎年宛名だけ自筆で書くようにしています。
段文字を書く機会がないので、こんな時に文字を書く練習をしないとどんどん下手くそになっていくんですよね。
といってもそんなに文字がきれいなわけじゃないんですけどね。。。
ま〜、たまに時間をかけて文字を書くのも頭の体操になるので、データ化する予定はありません。
それこそ「Pythonを活用したらいいんじゃない?」って声が聞こえてきそうですが、生活の一部にアナログを入れるのも大切ですよね。
それでは今日も、Python学習を始めましょう。
昨日の復習
昨日は、機械学習を効率よく処理の高速化ができるnumpy
の基本を学習しました。
基本的な配列のarray
から始まり、shape
、ndim
、size
、arange
などを学習しました。
Pythonの標準ライブラリのarray
も配列を扱えますが、多次元配列を扱えないのに対して、numpy.array
は、多次元の配列を扱えるのが特徴です。
くわしくは昨日の記事をごらんください。
今日は、arange
を使った配列の簡単な作成方法や値のたくさん入った配列の表示方法について学習します。
reshape
昨日は、直接np.array
に値を入れたり、arange
を使って、規則性のある配列を作成しましたが、arrange
の引数に整数を入れると、整数の数だけインデックス値の入った配列を作ることができます。
import numpy as np
a = np.array(6)
a
# arrray([0, 1, 2, 3, 4, 5])
arange
で値の数を指定して、配列を生成したあと、reshape
を使って配列を2次元や3次元の配列に変えることができます。
a = np.array(6).reshape(2, 3)
a
# array([[0, 1, 2],
# [3, 4, 5]])
a.ndim
# 2
a = np.arange(24).reshape(2, 3, 4)
a
# array([[[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]],
#
# [[12, 13, 14, 15],
# [16, 17, 18, 19],
# [20, 21, 22, 23]]])
a.ndim
# 3
6この配列を作って、2行3列の配列に整形したあと、ndim
で何次元かを出力しています。
2つ目では、24個の配列を2個分の3行4列の配列に整形しているので、3次元の配列になっています。
set_printoptions
次に、数がたくさんある配列を表示してみます。
np.arange(10000)
# array([ 0, 1, 2, ..., 9997, 9998, 9999])
np.np.arange(10000).reshape(100, 100)
# array([[ 0, 1, 2, ..., 97, 98, 99],
# [ 100, 101, 102, ..., 197, 198, 199],
# [ 200, 201, 202, ..., 297, 298, 299],
# ...,
# [9700, 9701, 9702, ..., 9797, 9798, 9799],
# [9800, 9801, 9802, ..., 9897, 9898, 9899],
# [9900, 9901, 9902, ..., 9997, 9998, 9999]])
数が多すぎる場合、1次元の配列でも、reshape
で2次元の配列にしても、...,
を使って間の数値を省略して表示されます。
すべての値を表示したいときは、set_printoptions
を使って、表示する最大値を指定します。
np.set_printoptions(threshold=10000)
np.arange(10000)
まとめ
arange
で作成した配列をreshape
を使って配列の形を変えたり、たくさんの値を持った配列の表示について学習しましたが、基本的な処理なので、しっかりと覚えておきましょう。
実際にデータを収集したり、加工したりしないとなかなか覚えられないかもしれませんが、数値を替えて配列を作成したり、これまで使ったコードを組み合わせて使ってみるなど、自分で体験することで、自然とコードが身についていきますので、いろいろと試してみてください。
それでは、明日もGood Python!