import numpy as np
ファイル入出力
numpyのは、テキストまたはバイナリ形式のいずれかでディスクにしてから、データを保存し、ロードすることができます。ほとんどのユーザーはロードテキストや表形式のデータのためのパンダやその他のツールを好むウィルので、このセクションでは、私は、numpyの内蔵のバイナリフォーマットを議論します。
np.saveとnp.loadを効率的にディスク上の配列データを保存およびロードするための2つの主力機能(主要的函数)です。配列は、ファイル拡張子.npyで圧縮されていない(未压缩的)生のバイナリフォーマットで、デフォルトで保存されます。
arr = np.arange(10)
"保存数组"
np.save('../examples/some_arry', arr)
'保存数组'
ファイルパスがすでに.npyで終わらない場合は、拡張子が追加されます。ディスクOアレイは、次いでnp.loadでoadedすることができます。
np.load('../examples/some_array.npy')
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int64)
:あなたは圧縮されていない(未解压的)np.savezを使用し、キーワード引数として配列を渡すアーカイブで複数のアレイを保存しました
.npzファイルをロードするとき、あなたはその負荷の個別(个别的)アレイなまけ辞書のようなオブジェクトを取り戻します。
np.savez("../examples/array_archive.npz", a=arr, b=arr)
arch = np.load('../examples/array_archive.npz')
'多个数组取出时, 是惰性加载的, 类似生成器'
arch['b']
'多个数组取出时, 是惰性加载的, 类似生成器'
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
あなたのデータがうまく圧縮した場合、あなたの代わりにnumpy.savez_compressed使用したい場合があります。
np.savez_compressed('../examples/arrays_compressed.npz', a=arr, b=arr)
線形代数
行列の掛け算(乗算)、分解(分解)、determinats(ランク)、およびその他の正方行列の数学のようなリニアalgeraは、任意の配列ライブラリーの重要な部分である。MATLIB LILEいくつかの言語とは異なり、2つ、2次元配列を掛けます* (Pythonでアスタリスクは、2によってアレイではなく、行列乗算ああの対応する要素を示す)。代わりに、マトリックスドット積の要素ごとの積であるしたがって、機能ドット、両方の配列方法及び機能があります行列の乗算のためにnumpyの名前空間、インチ
"2x3"
x = np.array([[1,2,3], [4,5,6]])
"3x2"
y = np.array([[6,23], [-1,7], [8,9]])
x
y
'2x3'
'3x2'
array([[1, 2, 3],
[4, 5, 6]])
array([[ 6, 23],
[-1, 7],
[ 8, 9]])
"2x3 * 3x2 = 2x2, 对左边列向量的线性组合嘛"
x.dot(y)
"x.dot(y) is equivalent to np.dot(x,y)"
np.dot(x,y)
'2x3 * 3x2 = 2x2, 对左边列向量的线性组合嘛'
array([[ 28, 64],
[ 67, 181]])
'x.dot(y) is equivalent to np.dot(x,y)'
array([[ 28, 64],
[ 67, 181]])
二次元アレイ及び一次元アレイにおける適切なサイズの一次元アレイ結果の行列積:
np.dot(x, np.ones(3))
array([ 6., 15.])
@記号も行う行列乗算こと(强制插入)中置演算子として機能します。
x @ np.ones(3)
array([ 6., 15.])
。Numpy.linalgは逆のような行列の分解や物事のstardardセットを持っており、これらは、MATLABやRなどの他の言語で使用したのと同じ業界標準の線形代数libraies(スルー)の下を経由して(実行されるように)フードを実装している決定します... - >これらの関数の標準マトリックスとのPythonであり、このような言語を使用しています。
from numpy.linalg import inv, qr
x = np.random.randn(5,5)
"计算内积 $A^TA$"
mat = x.T.dot(x)
'矩阵求逆 inv'
inv(mat)
'计算内积 $A^TA$'
'矩阵求逆 inv'
array([[ 2.85462863, -0.08842397, -0.01719878, 0.28840731, 1.33531619],
[-0.08842397, 0.36385157, 0.05790547, 0.21733807, -0.04179607],
[-0.01719878, 0.05790547, 0.16845103, 0.03607368, -0.07364311],
[ 0.28840731, 0.21733807, 0.03607368, 0.33697629, 0.22115989],
[ 1.33531619, -0.04179607, -0.07364311, 0.22115989, 0.89288396]])
"矩阵与其逆的积-> 单位阵"
mat.dot(inv(mat))
'矩阵的QR分解, Q是正交矩阵, R是上三角矩阵'
q, r = qr(mat)
q
r
'矩阵与其逆的积-> 单位阵'
array([[ 1.00000000e+00, -1.34588695e-17, 1.20337000e-17,
1.43461087e-16, 1.19991758e-16],
[-1.44647137e-16, 1.00000000e+00, -2.44723192e-19,
-3.05504861e-16, 1.85480504e-17],
[-5.64972079e-16, 1.06290868e-17, 1.00000000e+00,
-1.24805205e-17, -1.52382375e-17],
[ 2.64575648e-17, -3.37897541e-18, -3.46206228e-17,
1.00000000e+00, -2.61606309e-16],
[-4.05280510e-16, -4.83836278e-17, 2.70272255e-17,
-3.85392887e-17, 1.00000000e+00]])
'矩阵的QR分解, Q是正交矩阵, R是上三角矩阵'
array([[-0.49090965, -0.10814586, -0.24518935, 0.10423654, 0.82239231],
[ 0.00323168, -0.7867822 , -0.00793056, -0.61663426, -0.02574129],
[ 0.32640742, 0.12703087, -0.92399902, -0.14659492, -0.04535519],
[-0.1390847 , 0.59414019, 0.14745407, -0.76639263, 0.13620759],
[ 0.79568267, -0.01178262, 0.25357916, -0.00701326, 0.54990788]])
array([[-2.59814895, 1.59367406, 4.62351953, -3.75681459, 6.16316304],
[ 0. , -7.15657133, 0.57430456, 7.77949798, -2.22774585],
[ 0. , 0. , -6.05158388, 1.46469814, -0.57791469],
[ 0. , 0. , 0. , -2.70965304, 0.66330379],
[ 0. , 0. , 0. , 0. , 0.61587833]])
xTdot(x)は、その転置XTのとxの内積を計算発現します
algbrea機能リニア使用される最も一般的なのいくつかのリストについては、表4-7を参照してください。
- DIAG対角化
- ドットマトリックス乗算
- トレース迹:計算対角要素の和
- 計算行列行列行列DET
- INV逆計算正方行列の逆行列
- EIG、QR、スペクトル分解SVDマトリックス、QR分解、SVD分解
- 線形方程式の解は、線形システムAxを= Aは正方行列であり、xのBを解決する解決します
- lstsq最小二乗近似解を計算Ax = bのに最小二乗解