自分のキャリアをあれこれ考えながら、Pythonで様々なデータを分析していくブログです

[Python] Numpyとは何かまとめてみました。

Python
Python
ヒノマルク
ヒノマルク

pandasの使い方を書く前に、numpyの知識も必要だと思い調べました。
自分があまり理解できていなかったことを痛感しました。
記事をまとめるのにそれなりに時間がかかりましたが、勉強になりました。

スポンサーリンク

Numpyとは何か

NumpyとはNumerical Pythonの略で、pandasやscikit-learn内でも利用されているとても有名なライブラリです。

Numpyライブラリはndarrayと呼ばれる同じ型の多次元配列や行列構造が提供されており、数値などを効率的に操作することが出来るメソッドも含まれています。

The NumPy library contains multidimensional array and matrix data structures. It provides ndarray, a homogeneous n-dimensional array object, with methods to efficiently operate on it. 参照: https://numpy.org/doc/stable/user/absolute_beginners.html

スポンサーリンク

Numpyのインストール

依存関係でインストールされることが多いので、import numpyとしたら既に使える人が多いかもしれません。

その場合はインストール手順はスキップしてください。

numpyのインストール
$ /Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3 -m pip install numpy
Out[0]
Requirement already satisfied: numpy in ./Desktop/notebooks/my-venv/lib/python3.9/site-packages (1.22.1)

pandasをインストールしたときに依存関係でインストールされているので、requirement already satisfiedとなっています。
すでにインストールされているので、すぐにnumpyを使うことができます。

スポンサーリンク

numpy.ndarrayのデータ構造の特徴

下記のようなデータ構造を持ち、計算処理の大部分にC言語が用いられいることによって高速処理を実現させているようです。

  • ndarrayに格納できるデータ型は全て等しい
  • ndarrayの各次元に格納できる要素数は全て等しい
  • 各要素の値はmutable (変更可)
  • 各要素はindexでのアクセスが可能
  • 消費メモリが少ない (96 + n * 8 Bytes, where n is the size of array)

Listとnumpy.ndarrayの違いは何か

  • Listに格納できるデータ型は異なっていてもよい
  • Listを多次元化する場合、それぞれの次元の要素数は異なっていてもよい
  • 計算処理はnumpy.ndarrayの方が高速

下記はndarrayと等しい

  • 各要素の値はmutable (変更可)
  • 各要素はindexでのアクセスが可能

pandas.Seriesとnumpy.ndarrayの違いは何か

One-dimensional ndarray with axis labels (including time series). 引用: https://pandas.pydata.org/docs/reference/api/pandas.Series.html

1次元のndarrayがpandas.Seriesとのことです。
加えて軸ラベルと時系列データにも対応しているようです。

pandas.DataFrameとnumpy.ndarrayの違いは何か

Two-dimensional, size-mutable, potentially heterogeneous tabular data.
Can be thought of as a dict-like container for Series objects
引用: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html#pandas.DataFrame

サイズが可変で様々なデータ型が入る可能性がある表形式の2次元データと書いてあります。
Seriesの集まりがDataFrameと考えても良いそうです。
従って、異なるポイントはpandas.Seriesとnumpy.ndarrayの違いと同様になります。

(おまけ) tupleとlistの違いは何か

listはmutable(ミュータブル)、tupleはimmutable(イミュータブル)とよく説明させれています。

listには要素追加や削除のメソッドがありますが、tupleにはありません。

そのため、listだと思って、tupleにappendやremoveを使うことが出来なくなっているようです。

ただし、tupleでも同じ変数名でtupleを作成し直せば要素追加や削除のような挙動をさせることができるようです。
※ オブジェクトIDは変更される

こちらの記事がよくまとまっていて、理解しやすかったです。

スポンサーリンク

参照

https://numpy.org/doc/stable/user/whatisnumpy.html
https://numpy.org/doc/stable/user/absolute_beginners.html
https://www.geeksforgeeks.org/python-lists-vs-numpy-arrays/
https://www.nature.com/articles/s41586-020-2649-2
https://webcourses.ucf.edu/courses/1249560/pages/python-lists-vs-numpy-arrays-what-is-the-difference
https://stackoverflow.com/questions/11026011/why-does-the-content-of-a-tuple-changes-when-i-append-to-a-list-inside-of-it-but

タイトルとURLをコピーしました