0 numpyのブリーフ
numpyのPythonは、典型的にscipyのダウンロード、matplotlibのと共に使用される科学技術計算ライブラリ、マトリクス演算機能、です。実際には、リストには、すでに行列の類似の表現を提供しますが、numpyのは、私たちのために、より多くの機能を提供します。あなたはMathWorks社のMATLAB、Scilabのに接触する場合は、良いスタートをnumpyの。
1つのインストール
numpyのをインストールするPIP
numpyのでは、寸法が参照axis
(複数axes
)、次元数が呼び出されますrank
。
(NP単純な入力として一般的インポートnumpu)
2つの多次元配列
numpyの配列クラスがありndarray
、それは別名を持っていること numpy.array
が、Pythonの標準ライブラリとarray.array
同じではありません。後者は、一次元アレイです。そして、ndarray
次の属性があります。
ndarray.ndim
:配列の次元。Pythonの世界では、ディメンションと呼ばれますrank
ndarray.shape
:配列の次元。これは一連の数字であり、長さ(アレイの寸法はndim
)決定しました。例えば:Nの一次元配列の長さはshape
Nです。n行m列の行列は、shape
M、Nでありますndarray.size
:配列のすべての要素の数ndarray.dtype
:のタイプの配列要素、例えばnumpy.int32
、numpy.int16
またはnumpy.float64
ndarray.itemsize
:バイトの配列の各要素のサイズndarray.data
:バッファ記憶アレイ素子。通常、我々は唯一のバッファにアクセスすることなく、インデックスで要素にアクセスする必要があります
一次元アレイを生成するリストまたはタプル可変パラメータで:
np.array([1,2,3,4 ])
np.array(( 1.2,2,3,4))
素子として二次元配列または多次元配列を生成するための変数をリストかタプルします。
np.array(((1,2,3)、(4,5,6 )))
np.array([ 1,2,3]、[4,5,6]])
とき、我々はこのような指定された型の要素の配列を作成することができます。
np.array([1,2]、[3,4]、DTYPE =複合体)
あなたは、これは非常に有用であろう時に、注意astypeコールは、元のデータのコピーである新しい配列を返し、ファイル処理をastype変換タイプを使用することができます。
numeric_strings2 = np.array([ ' 1.23 '、' 2.34 '、' 3.45 ' ]、DTYPE = np.string_) プリント(numeric_strings2) [B ' 1.23 'の B ' 2.34 ' B ' 3.45 ' ] T = numeric_strings2.astype(フロート) プリント(T) [ 1.23 2.34 3.45]
3 numpyの指数(インデックス)とスライス(スライス)
- インデックスとスライシング:最初の横座標値アレイ状、第2の垂直軸。
X = np.array(((1,2,3,4)、(5,6,7,8)、(9,10,11,12 ))) と =のX [1 ] と[0] = 20 プリント(及び) プリント(X)
結果:
上記変更されますのx yを変更することで見つけることができるので、私たちは推測することができ、xとyが同じメモリ空間値を指していると、システムは新しいyのx値が過去に割り当てられているためにスペースを開きません。
ARR = np.arange(10 ) [ARR = 10:6 3] 印刷(ARR)
結果:
なぜこのような設計を考えてみて?numpyのは、大規模データを扱うように設計されたデータがコピーされた場合は、使用してスライスは素晴らしいパフォーマンスとメモリ消費量の問題を持っています。
- あなたは、配列のコピーの必要性は、あなたが次の操作を行うことができますビューがないと言うならば:
ARR = np.arange(10 ) arr_copy = ARR [3:6 ] .copy() プリント(arr_copy) arr_copy [:] = 24 プリント(arr_copy) プリント(ARR)
結果:
- (修正セクションのリストを見てデザインの深さはスライスが浅いコピーを所属のpythonを、コピーします):
L = [0、1、2、3、4、5、6、7、8、9 ] 、L [ 5:8] = 12 #报错TypeError例外:だけ反復可能割り当てることができ 、印刷(L) のL1 = 1 [5: 8 ] 印刷(L1) 、L1 [0] = 12 プリント(L1) プリント(L)
結果:
4多次元配列インデックス(指数)、スライス(スライス)
arr2d = np.arange(1,10).reshape(3,3 ) プリント(arr2d) プリント(arr2d [2 ]) 、印刷(arr2d [0] [2 ])、 印刷(arr2d [0,2])
結果:
5基本的な行列演算
トランスポーズ:
= np.array([1,0]、[2,3 ]) 、印刷(A) プリント() プリント(a.transpose())
結果:
固有値、固有ベクトル:
6の形状と操作
除了生成数组之外,当我们已经持有某个数据之后,我们可能会需要根据已有数组来产生一些新的数据结构,这时候我们可以使用下面这些函数:
reshape
:根据已有数组和指定的shape,生成一个新的数组vstack
:用来将多个数组在垂直(v代表vertical)方向拼接(数组的维度必须匹配)hstack
:用来将多个数组在水平(h代表horizontal)方向拼接(数组的维度必须匹配)hsplit
:用来将数组在水平方向拆分vsplit
:用来将数组在垂直方向拆分
7 特定array的创建
在实际上的项目工程中,我们常常会需要一些特定的数据,NumPy中提供了这么一些辅助函数:
zeros
:用来创建元素全部是0的数组ones
:用来创建元素全部是1的数组empty
:用来创建未初始化的数据,因此是内容是不确定的arange
:通过指定范围和步长来创建数组linespace
:通过指定范围和元素数量来创建数组random
:用来生成随机数
参考: