No Result
View All Result
WebHack
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
No Result
View All Result
WebHack
No Result
View All Result
Home プログラミング

【Python初心者向け】NumPyの使い方を徹底解説!その1

fukii by fukii
2020年3月9日
in プログラミング
0
【Python初心者向け】辞書(dict)の使い方を徹底解説!
0
SHARES
23
VIEWS

NumPyはPythonの標準リストよりも簡単に多次元配列を扱え、高速に行列計算できることから科学技術の計算や機械学習に使われています。

ここでは

  • NumPyって何?
  • NumPyの初期化や基本的な使い方は?
  • NumPyについて体系的に知りたい

といった方へ、NumPyの使い方をご紹介します。

目次

  • 1 NumPyの初期化
  • 2 多次元リストの初期化
  • 3 多次元リストへの要素の追加・変更・削除
    • 3.1 要素の追加 -append()-
    • 3.2 要素を挿入する-insert()-
    • 3.3 要素を削除する-delete()-
  • 4 NumPyのリストを通常のリストに戻す

NumPyの初期化

NumPyの初期化は次のようにやります。

                            import numpy as nplist = ["りんご", "みかん", "ぶどう"]np_list = np.array(list)print(np_list)print(type(np_list))
                          
                            ['りんご' 'みかん' 'ぶどう']
                          

NumPyの配列を作るにはnp.array()を使い、引数にリストかタプルを渡すことで初期化できます。

NumPyは拡張ライブラリなのでインポートしてから使います。

出力したNumPyのリストは通常のリストと異なり、要素の間のカンマがありません。

Typeを使って調べてみると「numpy.ndarray」と返ってきているのがわかると思います。

 

ndarrayですが、このクラスは通常のリストと異なり「要素の型の混在ができません」。

ただエラーにはならず、NumPyがいい感じに変換して型を揃えてくれます。

具体的には、floatとintが混ざってたら全てfloatに、数値と文字列が混ざっていたら文字列に変換します。

あとは数値と論理値(True, False)の場合は、Trueが1、Falseが0に置き換えられます。

                            import numpy as nplist1 = [10, 1.24] #int→floatlist2 = [10, 1.24, "りんご"] #数値→文字列list3 = [10, True, False] #論地理→数値np_list1 = np.array(list1)np_list2 = np.array(list2)np_list3 = np.array(list3)print(np_list1)print(np_list2)print(np_list3)
                          
                            [ 10.     1.24]['10' '1.24' 'りんご'][10  1  0]
                          

多次元リストの初期化

多次元リストの初期化方法を見ていきましょう。

NumPyは1次元より多次元の配列を扱うために作られたようなものなので、多次元配列の扱いに優れています。

作り方はいくつかありますが、一番簡単なのはnp.array()に多次元のリストかタプルを渡す方法です。

下の例では3行3列の要素を3つのリストを使って作成しています。

                            import numpy as nplist1 = ["1-1", "1-2", "1-3"]list2 = ["2-1", "2-2", "2-3"]list3 = ["3-1", "3-2", "3-3"]np_list = np.array([list1, list2, list3])print(np_list)
                          
                            [['1-1' '1-2' '1-3']['2-1' '2-2' '2-3']['3-1' '3-2' '3-3']]
                          

3行3列のリストを作成しました。NumPyの多次元リストを出力すると結果のようになります。

NumPyの多次元リストはこの方法以外にreshape()を使うこともできます。reshape()を使うと1次元のリストから多次元リストを作ることができます。

reshape()は何行何列のリストを作りたいかによって必要な要素数が変わります。2行2列なら4つ、3行3列なら9つ、3行4列なら12個の要素が必要です。

次の例では3行2列の多次元リストを作成しています。

                            import numpy as nplist = ["1-1", "1-2", "2-1", "2-2", "3-1", "3-2"]np_list = np.array(list).reshape(3, 2)print(np_list)
                          
                            [['1-1' '1-2']['2-1' '2-2']['3-1' '3-2']]
                          

reshape()の1つ目の引数に行数、2つ目に列数を指定します。ndarrayのメソッドなので、np.array()でndarrayを作成してから使います。

多次元リストへの要素の追加・変更・削除

次に初期化したndarrayへの要素の追加・変更・削除をしてみましょう。

要素の追加 -append()-

要素の追加にはappend()を使います。

1つ目の引数にndarray、2つ目に追加する要素を指定します。また、axisという引数に0を指定すると行、1を指定すると列を追加することができます。

次の例では多次元リストに行を追加しています。

                            import numpy as npnp_list = np.array([1, 2, 3, 4]).reshape(2, 2)print(np_list)append_list = np.array([5, 6]).reshape(1, 2)print(append_list)result_list = np.append(np_list, append_list, axis = 0)print(result_list)
                          
                            [[1 2][3 4]][[5 6]][[1 2][3 4][5 6]]
                          

axisに0を指定しているので、今回は行として2つ目の引数に指定したリストを挿入しています。

列として追加したい場合は1を指定します。が、ただ0を1に変えてもエラーになります。

                            result_list = np.append(np_list, append_list, axis = 1) #axisを1に変更
                          
                            ValueError: all the input array dimensions except for the concatenation axis must match exactly
                          

なぜかというと、append_listが[[5, 6]]と1行2列の構造になっているからです。これを2行1列の構造に変えると、形がはまって正常に列を追加できます。

                            import numpy as npnp_list = np.array([1, 2, 3, 4]).reshape(2, 2)append_list = np.array([5, 6]).reshape(2, 1) #reshape(1, 2)を(2, 1)に変更print(append_list)result_list = np.append(np_list, append_list, axis = 1) # axisは1print(result_list)
                          
                            [[5][6]][[1 2 5][3 4 6]]
                          

追加するリストを縦にすることで、列として正常に追加することができました。

要素を挿入する-insert()-

要素を挿入する場合はinsert()を使います。append()ではリストの末端に行か列を追加できましたが、insert()では挿入する位置を指定することでリストとリストの間にリストを挿入できます。

次の例では2行2列のリストの間に行を挿入しています。

                            import numpy as npnp_list = np.array([1, 2, 3, 4]).reshape(2, 2)insert_list = np.array([5, 6]).reshape(1, 2)result_list = np.insert(np_list, 1, insert_list, axis = 0)print(result_list)
                          
                            [[1 2][5 6][3 4]]
                          

insertは2つ目の引数に挿入位置を指定します。インデックス番号で0から数えるので、今回は1を指定して行と行の間に新しく行を追加しました。

また、insertもaxisに1を指定することで列を挿入することができます。

appendの時と違い、insertの場合は挿入するリストは2行1列ではなく、1行2列で問題ありません。

                            import numpy as npnp_list = np.array([1, 2, 3, 4]).reshape(2, 2)insert_list = np.array([5, 6]).reshape(1, 2) #1行2列で定義result_list = np.insert(np_list, 1, insert_list, axis = 1)print(result_list)
                          
                            [[1 5 2][3 6 4]]
                          

要素を削除する-delete()-

delete()を使うことでndarray内の要素を削除できます。

次の例では、row_delete_listでは2行目を、col_delete_listでは2列目を削除しています。

                            import numpy as npnp_list = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]).reshape(3, 3)row_delete_list = np.delete(np_list, 1, axis = 0)print(row_delete_list)col_delete_list = np.delete(np_list, 1, axis = 1)print(col_delete_list)
                          
                            [[1 2 3][7 8 9]][[1 3][4 6][7 9]]
                          

NumPyのリストを通常のリストに戻す

最後にndarrayのリストを通常のリストに戻す方法を見てみましょう。

ndarrayを通常のリストに戻すにはtolist()を使います。

                            import numpy as npnp_list = np.array(["a", "b", "c"])np_list2 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]).reshape(3, 3)print(np_list.tolist())print(np_list2.tolist())
                          
                            ['a', 'b', 'c'][[1, 2, 3], [4, 5, 6], [7, 8, 9]]
                          

一次元のndarrayは一次元のリストに、多次元の場合は多次元のリストに変換されます。

 

Tags: list ndarray NumPy Python リスト 多次元リスト
Previous Post

【テレビで大迫力の映像が楽しめる】Chromecastの使用感を徹底レビュー

Next Post

【iPad OS】画面分割(2画面表示)によるマルチタスクのやり方を徹底解説!

fukii

fukii

Next Post
【iPad OS】画面分割(2画面表示)によるマルチタスクのやり方を徹底解説!

【iPad OS】画面分割(2画面表示)によるマルチタスクのやり方を徹底解説!

コメントを残す コメントをキャンセル

人気記事

  • スマホだけでじゃない!5Gで実現できること&変わる生活 

    スマホだけでじゃない!5Gで実現できること&変わる生活

    0 shares
  • 【作業効率化に最適】LGの29インチウルトラワイドモニターを徹底レビュー

    0 shares
  • [中学生・高校生向け]どんな教室を選べばいい?おすすめのプログラミング教室を徹底解説!

    0 shares
  • 【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    0 shares
  • 【N高校】プログラミングコースって実際どうなの?

    0 shares

カテゴリー

  • IoT/ガジェット (171)
  • Webサービス (71)
  • お知らせ (4)
  • プログラミング (40)
  • モバイルアプリ (41)
  • 自動運転 (2)
  • 通信技術 (18)
  • 電気自動車 (3)

タグ

5G AI Android ANKER Apple Bluetooth Chrome Chrome拡張機能 DJI ELECOM GoodNotes5 Google GoPro IoT iPad iPad OS iPad Pro iPhone Java Javascript kickstarter list NumPy Python Twitter Wi-Fi Wi-Fiルーター YouTube アクションカメラ アプリ オススメ キックスターター クラウドファンディング グーグル スマートフォン ディープラーニング プログラミング プログラミング言語 モバイルバッテリー リスト リモートワーク リモート会議 ワイヤレス充電器 新型コロナウイルス 防災アイテム

WebHackはインターネットサービスやガジェットなどITトレンド情報をお伝えしていきます。

Category

  • IoT/ガジェット
  • Webサービス
  • お知らせ
  • プログラミング
  • モバイルアプリ
  • 自動運転
  • 通信技術
  • 電気自動車

Follow Us

  • プライバシーポリシー
  • お問い合わせ

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .

No Result
View All Result
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .