[Pythonデータ分析] numpyの基本

配列のプロパティ

ndimと形状の違い

ndim軸の数、つまり外側から内側への層の数(axis = 0が最外層です)
形状各層配列の要素は、長さがndimのタプルを返します((2,2,3)など)。 axis = 0、2つの要素があります。axis= 1、2つの要素があります。最も内側のaxis = 3には3つの要素があり、ndim = 3
ここに画像の説明を挿入

配列を作成

1.一般的な作成

numpy.array(オブジェクト、dtype =なし、コピー= True、順序=なし、subok = False、ndmin = 0)

numpy.empty(形状、DTYPE =フロート、順序= 'C') を作成するために、空のアレイ
numpy.zeros(形状、DTYPE =フロート、順序= 'C')を作成するために、ゼロ配列
numpy.ones(形状、DTYPE =なし、注文を= 'C')1つの配列を作成

2. 既存のアレイからアレイを作成します

numpy.asarray(a、dtype = None、order = None)aは、リスト、リストのタプル、タプルなどの任意の形式の入力パラメーターです
。numpy.frombuffer(buffer、dtype = float、count = -1、offset = 0)バッファは
、反復可能なオブジェクトから作成されたストリームの形式でパラメータnumpy.fromiter(iterable、dtype、count = -1)で渡されます。

3. 値の範囲から配列を作成します

numpy.arange(start、stop、step、dtype)は、start-stop
np.linspace(start、stop、num = 50、endpoint = True、retstep = False、dtype = None)の範囲内の配列を作成し、1次元の等価配列を作成します。 numは、
比例シーケンスを作成するために生成された要素np.logspace(開始、停止、num = 50、endpoint = True、base = 10.0、dtype = None)の数です。

派手なスライスとインデックス作成

1.インデックスによるスライス()スライス

import numpy as np
a = np.arange(10)
s = slice(2,7,## 标题2)   # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])
[2,4,6]

2. [開始:停止:ステップ]
b = a [2:7:2]
コロンの説明:[2]のようにパラメーターを1つだけ配置すると、インデックスに対応する単一の要素が返されます。[2:]の場合、インデックスから始まるすべてのアイテムが抽出されることを意味します。[2:7]などの2つのパラメーターが使用されている場合2つのインデックスの間のアイテムを抽出ます(停止インデックスを除く

3.省略記号を含める...選択したタプルの長さを配列の次元と同じにし、行の位置に省略記号を使用して、行の要素を含む配列を返します

import numpy as np
 
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print (a[...,1])   # 第2列元素
print (a[1,...])   # 第2行元素
print (a[...,1:])  # 第2列及剩下的所有元素

#输出结果
[2 4 5]

[3 4 5]

[[2 3]
 [4 5]
 [5 6]]

高度なインデックス

整数配列インデックス

import numpy as np 
 
x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print (y)
#输出结果,获取数组(0,0),(1,1),(2,0)位置处元素
[1,4,5]

スライス:または...インデックス付き配列と組み合わせる

a = np.array([[1,2,3], [4,5,6],[7,8,9]])
c = a[1:3,[1,2]]
#输出结果,1:3切片索引不含尾,[1,2]索引数组包含头和尾
[[5 6]
 [8 9]]

ブールインデックス
ブール演算(比較演算子など)を使用して、指定した条件を満たす要素の配列を取得します。x [x> 5]
a
[〜np.isnan(a)]はaのNaN a [np.iscomplex(a)]をフィルタリングし、複素数を提案します

ファンシーインデックス
は、スライスとは異なる整数配列を使用したインデックス作成を指します。データを常に新しい配列にコピーします。ターゲットが多次元配列の場合、添え字
x = np.arange(32 ).reshape((8,4))
print(x [[4,2,1,7]])#line index

x=np.arange(32).reshape((8,4))
print (x[np.ix_([1,5,7,2],[0,3,1,2])])#传入多个索引数组(要使用np.ix_)

NumPy Broadcast(ブロードキャスト)

a.shape≠b.shapeが動作しているとき、ブロードキャストメカニズムがトリガーされます

放送ルール:

すべての入力配列は、最も長い形状の配列と位置合わせされ、形状の欠けている部分は、前に1を追加することで埋められます。
出力配列の形状は、入力配列の形状の各次元の最大値です。
入力配列の次元と対応する出力配列の次元が同じ長さであるか、その長さが1である場合、その配列を計算に使用できます。それ以外の場合はエラーが発生します。
入力配列の次元の長さが1の場合、この次元に沿って計算するときに、この次元の最初の値のセットが使用されます。
npとしてnumpyをインポートする

a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([1,2,3])
bb = np.tile(b, (4, 1))  # 重复 b 的各个维度
print(a + bb)
#结果
[[ 1  2  3]
 [11 12 13]
 [21 22 23]
 [31 32 33]]

tile()関数は、元のマトリックスを水平および垂直にコピーします。

tile(mat、(1、4))#列はオリジナルの4倍コピーされます

NumPy反復配列 numpy.ndite

Numpy配列演算

配列形状を変更する

numpy.reshape(arr、newshape、order = 'C')

numpy.ndarray.flat配列要素イテレーター

ndarray.flatten(order = 'C')は配列のコピーを返します。コピーに加えられた変更は元の配列に影響を与えません。順序: 'C'行、 'F'列、 'A'オリジナル順序、「K」-要素がメモリに表示される順序。

a=[[0 1 2 3]
 [4 5 6 7]]
a.flatten()=[0 1 2 3 4 5 6 7]

numpy.ravel(a、order = 'C')平坦化された配列要素。変更は元の配列に影響します。

配列を反転

numpy.transpose(arr、axes)は、numpy.ndarray.T transposeと同様に、配列の次元を交換します

numpy.rollaxis(arr、axis、start)関数は、特定の軸を特定の位置の
まで後方にスクロールします。軸は後方にスクロールされます。他の軸の相対位置は
開始されません。デフォルトはゼロで、これは完全なスクロールを意味します。特定の場所にスクロールします。

a = np.arange(8).reshape(2,2,2)
b=np.rollaxis(a,2)#将轴 2 滚动到轴 0(宽度到深度)
c=np.rollaxis(a,2,1) # 将轴 0 滚动到轴 1:(宽度到高度)
原数组:
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
b:
[[[0 2]
  [4 6]]
 [[1 3]
  [5 7]]]
c:
[[[0 2]
  [1 3]]

 [[4 6]
  [5 7]]]

numpy.swapaxes(arr、axis1、axis2)は、配列の2つの軸を入れ替えます

配列の次元を変更する

numpy.broadcast(arr1、arr2)は、ブロードキャストオブジェクトを模倣するために使用され、オブジェクトを返します。オブジェクトは、配列を別の配列にブロードキャストした結果をカプセル化します。

numpy.broadcast_to(array、shape、subok)

numpy.expand_dims(arr、axis)指定された位置に新しい軸を挿入して、配列形状を拡張します

numpy.squeeze(arr、axis)は、指定された配列の形状から1次元のエントリを削除します

配列に参加

numpy.concatenate((a1、a2、…)、axis)は、指定された軸に沿って同じ形状の2つ以上の配列を接続します

numpy.stack(arrays、axis)新しい軸に沿った配列配列のスタック

分割配列

numpy.split(ary、indices_or_sections、axis)注:配列の場合は、軸に沿って分割する位置です(左開き、右開き)。

numpy.hsplitは、配列を水平に分割するために使用されます

numpy.vsplitは縦軸に沿って分割

配列要素を追加および削除する

numpy.resize(arr、shape)新しい配列のサイズが元のサイズより大きい場合、元の配列の要素のコピーが含まれます

numpy.append(arr、values、axis = None)の値は、arr、axisと同じ形状である必要があります。デフォルトはNoneです。軸が定義されていない場合、それは水平加算であり、戻り値は常に1次元配列です!

numpy.insert(arr、obj、values、axis)軸パラメーターは渡されません。入力配列は挿入前に拡張されます

Numpy.delete(arr、obj、axis)は、指定されたサブ配列を入力配列から削除する新しい配列を返します。insert()関数の場合と同様に、軸パラメーターが指定されていない場合、入力配列は拡張されます。

numpy.unique(arr、return_index、return_inverse、return_counts)は、配列内の重複要素を削除します

NumPyビット演算

bitwise_andアレイ素子とビット演算実行
bitwise_or操作を行い、アレイ要素又はビット
反転ビット単位を
left_shift左向きバイナリ表現のビット
right_shift右への移動のバイナリ表現をビット

numpy関数操作

文字列関数(numpy.charグループクラス内)

add()は2つの配列の文字列要素を1つずつ連結します
multiply()は要素で複数接続された文字列を返します
center()文字列
の最初の文字を大文字に
変換します()文字を大文字に変換します()文字を変換します文字列の各単語の最初の文字は
小文字の小文字に変換されます()配列要素は小文字の
大文字に変換されます
()配列要素は大文字に変換されますsplit()文字列を分割して配列リストを返す区切り文字を指定し
ますsplitlines()は要素を返します改行
ストリップで分割された行のリスト()は、要素の先頭または末尾の特定の文字を削除します
join()区切り文字を指定して配列の要素を接続します
replace()文字列内のすべてのサブ文字を新しい文字列で置き換えます文字列の
デコード()配列要素はstr.decodeを呼び出します
エンコード()配列要素はstr.encodeを呼び出します

数学関数

SIN()、COS()、タン()
numpy.around(Aは、小数点以下)が指定された数の丸められた値を返し
numpy.floor()が切り捨て
numpy.ceil()切り上げを

算術関数

add()、subtract()、multiply()およびdivide()add、subtract、multiplyおよびdivide
numpy.reciprocal()は、
numpy.power()パワー演算
numpy.mod()剰余のパラメーターごとの逆を返します

NumPy統計関数

numpy.amin()とnumpy.amax()は、指定された軸に沿った配列内の要素の最小値と
最大値を計算しますnumpy.ptp()最大-最小値
numpy.percentile(a、q、axis)q計算するパーセンタイル数
numpy.median()メジアン
numpy.mean()分割素子の軸に沿った要素の数の和の算術平均である
アレイが配備されている、numpy.average()は軸を指定されていない
標準偏差np.std
NPを。 var variance

NumPyソート、条件付きブラシ選択機能

numpy.sort(a、axis、kind、order)kind:デフォルトは 'quicksort'(クイックソート)です
。numpy.argsort()は、配列値のインデックス値を小さい値から大きい値に返します。
numpy.lexsort()は複数のシーケンスを並べ替え、インデックス値を返し、優先順位の高いアイテムを後ろに
置きますsort_complex(a)複素数を実数部、次に虚数部
(a、kth [、axis 、kind、order])パーティションソート
argpartition(a、kth [、axis、kind、order]は、キーワードkindを使用して、指定された軸に沿って配列
numpy.argmax()およびnumpy.argmin()に配列を分割するアルゴリズムを指定できます軸は最大要素と最小要素
のインデックスを返します。numpy.nonzero()関数は、入力配列の非ゼロ要素のインデックスを返します
。Numpy.where()
numpy.extract()は、特定の条件に従って配列から要素を抽出し、完全な状態の要素を返します

バイトスワップ

numpy.ndarray.byteswap()関数は、ndarrayの各要素のバイトをビッグエンディアンに変換します。

NumPyのコピーと表示

ビューは通常、ビューが変更されて元の値を変更したときに発生します。

1. numpyスライス操作は、元のデータのビューを返します。
2. ndarrayのview()関数を呼び出して、ビューを生成します。

コピーは通常、コピーの元の値が変更されていない場合に発生します

Pythonシーケンスのスライス操作については、deepCopy()関数を呼び出します。
ndarrayのcopy()関数を呼び出してコピーを作成します

NumPyマトリックスライブラリ(マトリックス)numpy.matlib

numpy.matlib.empty(shape、dtype、order)は新しい行列を返します
numpy.matlib.zeros()
numpy.matlib.ones()
numpy.matlib.eye()
numpy.matlib.identity()単位行列
numpy.matlib .rand()
行列は常に2次元であり、ndarrayはn次元の配列です。両方のオブジェクトは交換可能です

NumPy線形代数

dot 2つの配列のドット積。つまり、要素は対応して乗算されます。
vdot 2つのベクトルの
内積inner
2つの配列の内積matmul 2つの配列の行列積
linalg.det()配列の
行列式
linalg.solve()線形行列方程式を解くlinalg.inv()行列の乗法的逆モーメントを計算する

NumPy IO

numpy.save(ファイル、arr、allow_pickle = True、fix_imports = True)
numpy.savez()関数は、複数の配列をnpz拡張子を持つファイルに保存します。
np.loadtxt(FILENAME、dtype = int、delimiter = '')
np.savetxt(FILENAME、a、fmt = "%d"、delimiter = "、")

リリース元の4件の記事 ウォンの賞賛1 ビュー128

おすすめ

転載: blog.csdn.net/qq_34385466/article/details/104445071