Python科学計算パッケージnumpy用法例の詳細
15876 ワード
本論文の例では,Python科学計算パッケージnumpyの使い方を述べた.皆さんの参考にしてください.具体的には以下の通りです.
1データ構造
numpyは、ndarrayと呼ばれるMatlabのようなマトリクス型データ構造を使用してデータを管理し、pythonのリストや標準ライブラリのarrayクラスよりも強力で、データの処理が便利です.
1.1配列の生成
numpyでは、配列を生成するにはデータ型を指定する必要があります.デフォルトはint 32、すなわち整数です.dtypeパラメータで指定できます.一般的にint 32、bool、float 32、uint 32、complexが使用されます.整数、ブール値、浮動小数点型、符号なし整数、複素数を表します.
一般に、配列を生成する方法はいくつかあります.
リストリストをパラメータとして生成します(tolistメソッドでリストに変換できます):
開始、終了、ステップ長の等差シーケンスまたは等比数列を指定します.
反復器から生成:
関数から生成:
配列はzeros、ones、emptyなどの関数で迅速に作成することもできます.
行列は2 D配列として扱われます.
同じ方法でより高い次元に拡張できます.
また、スプレッドシートまたはデータベース内の1行のデータの情報を記録するために、構造配列と呼ばれるカスタムデータフォーマットの配列を生成することもできます.
後でpandasがより洗練された方法で記録を処理することを示します.
1.2配列の索引
単純なインデックス:
pythonと同様に、インデックスの開始点は0です.負のインデックスももちろん可能です.
整数配列を下付きインデックスとし、複数の値を一度にインデックスします.
ブール値を使用してインデックスを作成することもできます.
これは、条件インデックスなどの高度なインデックスに適用できます.
b中の3より大きいすべての要素がarray形式で返されるのは、b>3がbと一致するブール配列を返すためであり、各位置の値はb中の各要素が3と比較された結果である.
1.3配列のスライス
ndarray配列は様々な形式のスライスをサポートし、以下を手がかりとしてもよいし、値を手がかりとしてもよい.両者を区別するために、配列を再生成する.
下付きのスライスに基づいて:
角カッコの3つのパラメータは、始点、終点、ステップ長で、デフォルト値はそれぞれ0、-1、1であり、終点は含まれていないことに注意してください.簡単にステップ長を-1にして配列を反転できます.
ndarrayは、多次元配列のスライスもサポートしています.3次元配列になります.1次元配列のshapeプロパティを変更したり、reshapeメソッドを呼び出したりすることで、次のように生成できます.
多次元配列のインデックスは、実際には1次元とは大きく異なりません.すべてを選択することを表します.
複数のコロンは
最後に、sliceオブジェクトを使用してスライスを表すことができます.これは、
相当于
上記の3 D配列をフラット化するには、次の手順に従います.
転置:
shapeプロパティを変更して次元を変更します.
1.5配列の組み合わせ
まず、aと同じサイズの配列を作成します.
水平方向の組み合わせなど、さまざまな方法で組み合わせることができます.
垂直の組み合わせ:
この2つの方法はconcatenate関数で同時に実現でき、axisパラメータを指定することでデフォルトは0で、垂直組合せを使用します.
深度の組み合わせもできます.
2つの2 D平面の点データを縦軸方向に重ね合わせるようにします.
1.6配列の分割
水平分割:
垂直分割:
split関数を使用すると、axisパラメータの違いを設定することで、この2つの効果を同時に実現できます.
同様に、関数
また、ndarrayのいくつかのプロパティを使用して、配列の情報を表示することもできます.
さらに、多次元配列のflatプロパティには、「フラット反復」――flatiterオブジェクトが与えられ、1次元配列のように高次元配列を反復できます.
flatiterオブジェクトは、複数の要素を直接取得し、変更を直接割り当てることができます.
1.7行列の生成
マトリクスを2次元配列でシミュレートできると述べたが、numpyはマトリクスを処理するためのデータ構造を専門に提供している.
2 D配列とマトリクスは簡単に変換できます.
matrixでマトリクスを処理するのが便利で、次のような方法があります.
逆を求める:
ブロックマトリクス:
2データ処理
2.1条件判断と検索
where関数を使用すると、条件を満たすインデックスが得られ、後期処理が容易になります.
2.2 CSVファイルの読み書き
CSV(カンマ分割値)フォーマットは配列や行列を簡単に保存できます.pythonのpickleメソッドに比べて、CSVファイルとして保存するには、一般的なテキストエディタでいつでも開くことができます.CSVファイルの保存と読み取りは簡単です.
保存時パラメータ
時間などの文字列に遭遇した場合、パラメータconvertersを指定することで変換できます.
2.3汎用関数
さらにnumpyは、add、subtract、multiply、divideなどの一般的な汎用関数を提供する.汎用関数には、add関数を例に、reduce、accumulate、reduceat、outerの4つの方法があります.
reduceは汎用関数をすべての要素に再帰的に作用させ、最後の結果を得ることができる.accumulateもすべての要素に再帰的に作用しますが、中間結果を保持して返します.reduceatは、指定した開始点に基づいて累積演算を行い、終点が始点より小さい場合は終点の値を返します.最後にouterは,2つの入力配列のすべての要素の組合せを演算する.
3科学計算
3.1統計分析
3.1.1基本統計分析
AVerage関数は、重み付け平均値を非常に容易に計算したり、meanで算術平均値を計算したりすることができます.
基本統計分析関数は以下のように整理される.
中位数:
3.1.2ランダムプロセス分析
3.2線形代数
各要素が0~1以内の乱数の行列を作成します.
次に、次のようなさまざまな線形代数の操作を行うことができます.
逆を求める:
解線形方程式グループ(ポイント積で結果を検証):
フィーチャー値とフィーチャーベクトルを求めます.
行列:
Pythonに関する詳細について興味のある読者は、「Python数学演算テクニックまとめ」、「Pythonデータ構造とアルゴリズムチュートリアル」、「Python関数使用テクニックまとめ」、「Python文字列操作テクニックまとめ」、「Python入門と進級経典チュートリアル」、「Pythonファイルとディレクトリ操作テクニックまとめ」を参照してください.
ここではPythonプログラムの設計に役立つことを願っています.
1データ構造
numpyは、ndarrayと呼ばれるMatlabのようなマトリクス型データ構造を使用してデータを管理し、pythonのリストや標準ライブラリのarrayクラスよりも強力で、データの処理が便利です.
1.1配列の生成
numpyでは、配列を生成するにはデータ型を指定する必要があります.デフォルトはint 32、すなわち整数です.dtypeパラメータで指定できます.一般的にint 32、bool、float 32、uint 32、complexが使用されます.整数、ブール値、浮動小数点型、符号なし整数、複素数を表します.
一般に、配列を生成する方法はいくつかあります.
リストリストをパラメータとして生成します(tolistメソッドでリストに変換できます):
In[3]: a = array([1, 2, 3])
In[4]: a
Out[4]: array([1, 2, 3])
In[5]: a.tolist()
Out[5]: [1, 2, 3]
開始、終了、ステップ長の等差シーケンスまたは等比数列を指定します.
In[7]: a = arange(1, 10, 2)
In[8]: a
Out[8]: array([1, 3, 5, 7, 9])
In[13]: a = linspace(0, 10, 5)
In[14]: a
Out[14]: array([ 0. , 2.5, 5. , 7.5, 10. ])
In[148]: a = logspace(0, 3, 10) # 0 10^0,3 10^3, base
In[149]: a
Out[148]:
array([ 1. , 2.15443469, 4.64158883, 10. ,
21.5443469 , 46.41588834, 100. , 215.443469 ,
464.15888336, 1000. ])
反復器から生成:
In[17]: iter = (i for i in range(5))
In[18]: a = fromiter(iter, dtype=int32)
In[19]: a
Out[19]: array([0, 1, 2, 3, 4])
関数から生成:
In[156]: def f(i, j):
... return abs(i-j)
...
In[157]: fromfunction(f, (4, 4))
Out[156]:
array([[ 0., 1., 2., 3.],
[ 1., 0., 1., 2.],
[ 2., 1., 0., 1.],
[ 3., 2., 1., 0.]])
配列はzeros、ones、emptyなどの関数で迅速に作成することもできます.
行列は2 D配列として扱われます.
In[24]: b = array([arange(5), arange(1, 6), arange(2, 7)])
In[25]: b
Out[25]:
array([[0, 1, 2, 3, 4],
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6]])
同じ方法でより高い次元に拡張できます.
また、スプレッドシートまたはデータベース内の1行のデータの情報を記録するために、構造配列と呼ばれるカスタムデータフォーマットの配列を生成することもできます.
In[61]: t = dtype([('name', str, 40), ('number', int32), ('score', float32)])
In[62]: t
Out[62]: dtype([('name', '
後でpandasがより洗練された方法で記録を処理することを示します.
1.2配列の索引
単純なインデックス:
In[30]: a[2]
Out[30]: 2
In[31]: b[2, 1]
Out[31]: 3
pythonと同様に、インデックスの開始点は0です.負のインデックスももちろん可能です.
In[32]: a[-1]
Out[32]: 4
In[33]: b[-1, -2]
Out[33]: 5
整数配列を下付きインデックスとし、複数の値を一度にインデックスします.
In[162]: arange(11, 20)[array([2, 4, 8])]
Out[161]: array([13, 15, 19])
ブール値を使用してインデックスを作成することもできます.
In[40]: idx = array([True, False, False, True, True])
In[41]: a[idx]
Out[41]: array([0, 3, 4])
これは、条件インデックスなどの高度なインデックスに適用できます.
b[b>3]
Out[42]: array([4, 4, 5, 4, 5, 6])
b中の3より大きいすべての要素がarray形式で返されるのは、b>3がbと一致するブール配列を返すためであり、各位置の値はb中の各要素が3と比較された結果である.
In[43]: b>3
Out[43]:
array([[False, False, False, False, True],
[False, False, False, True, True],
[False, False, True, True, True]], dtype=bool)
1.3配列のスライス
ndarray配列は様々な形式のスライスをサポートし、以下を手がかりとしてもよいし、値を手がかりとしてもよい.両者を区別するために、配列を再生成する.
a = arange(11, 20)
In[54]: a
Out[54]: array([11, 12, 13, 14, 15, 16, 17, 18, 19])
下付きのスライスに基づいて:
In[55]: a[1:4]
Out[55]: array([12, 13, 14])
In[56]: a[1:8:2]
Out[56]: array([12, 14, 16, 18])
In[57]: a[1::2]
Out[57]: array([12, 14, 16, 18])
In[58]: a[:8:]
Out[58]: array([11, 12, 13, 14, 15, 16, 17, 18])
角カッコの3つのパラメータは、始点、終点、ステップ長で、デフォルト値はそれぞれ0、-1、1であり、終点は含まれていないことに注意してください.簡単にステップ長を-1にして配列を反転できます.
In[60]: a[::-1]
Out[60]: array([19, 18, 17, 16, 15, 14, 13, 12, 11])
ndarrayは、多次元配列のスライスもサポートしています.3次元配列になります.1次元配列のshapeプロパティを変更したり、reshapeメソッドを呼び出したりすることで、次のように生成できます.
In[68]: a = arange(0, 24).reshape(2, 3, 4)
In[69]: a
Out[69]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
多次元配列のインデックスは、実際には1次元とは大きく異なりません.すべてを選択することを表します.
In[70]: a[:, 0, 0]
Out[70]: array([ 0, 12])
In[71]: a[0, :, 0]
Out[71]: array([0, 4, 8])
In[72]: a[0, 0, :]
Out[72]: array([0, 1, 2, 3])
In[73]: a[0, 0:2, 0:3]
Out[73]:
array([[0, 1, 2],
[4, 5, 6]])
複数のコロンは
...
で代用できます.
In[74]: a[...,3]
Out[74]:
array([[ 3, 7, 11],
[15, 19, 23]])
最後に、sliceオブジェクトを使用してスライスを表すことができます.これは、
1:10:2
形式でスライスを生成するのと似ています.
In[169]: idx = slice(None, None, 2)
In[171]: a[idx,idx,idx]
Out[170]:
array([[[ 0, 2],
[ 8, 10]]])
相当于
a[::2, ::2, ::2]
1.4配列の変換上記の3 D配列をフラット化するには、次の手順に従います.
In[75]: a.flatten()
Out[75]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
転置:
In[77]: b.transpose()
Out[77]:
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
shapeプロパティを変更して次元を変更します.
In[79]: a.shape = 4, 6
In[80]: a
Out[80]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
1.5配列の組み合わせ
まず、aと同じサイズの配列を作成します.
In[83]: b = 2*a
水平方向の組み合わせなど、さまざまな方法で組み合わせることができます.
In[88]: hstack((a, b))
Out[88]:
array([[ 0, 1, 2, 3, 4, 5, 0, 2, 4, 6, 8, 10],
[ 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22],
[12, 13, 14, 15, 16, 17, 24, 26, 28, 30, 32, 34],
[18, 19, 20, 21, 22, 23, 36, 38, 40, 42, 44, 46]])
垂直の組み合わせ:
In[89]: vstack((a, b))
Out[89]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[ 0, 2, 4, 6, 8, 10],
[12, 14, 16, 18, 20, 22],
[24, 26, 28, 30, 32, 34],
[36, 38, 40, 42, 44, 46]])
この2つの方法はconcatenate関数で同時に実現でき、axisパラメータを指定することでデフォルトは0で、垂直組合せを使用します.
深度の組み合わせもできます.
In[91]: dstack((a, b))
Out[91]:
array([[[ 0, 0],
[ 1, 2],
[ 2, 4],
[ 3, 6],
[ 4, 8],
[ 5, 10]],
[[ 6, 12],
[ 7, 14],
[ 8, 16],
[ 9, 18],
[10, 20],
[11, 22]],
[[12, 24],
[13, 26],
[14, 28],
[15, 30],
[16, 32],
[17, 34]],
[[18, 36],
[19, 38],
[20, 40],
[21, 42],
[22, 44],
[23, 46]]])
2つの2 D平面の点データを縦軸方向に重ね合わせるようにします.
1.6配列の分割
水平分割:
In[94]: hsplit(a, 3)
Out[94]:
[array([[ 0, 1],
[ 6, 7],
[12, 13],
[18, 19]]), array([[ 2, 3],
[ 8, 9],
[14, 15],
[20, 21]]), array([[ 4, 5],
[10, 11],
[16, 17],
[22, 23]])]
垂直分割:
In[97]: vsplit(a, 2)
Out[96]:
[array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])]
split関数を使用すると、axisパラメータの違いを設定することで、この2つの効果を同時に実現できます.
同様に、関数
dsplit
により深さ分割を行うことができる.また、ndarrayのいくつかのプロパティを使用して、配列の情報を表示することもできます.
In[125]: a.ndim #
Out[124]: 2
In[126]: a.size #
Out[125]: 24
In[127]: a.itemsize #
Out[126]: 4
In[128]: a.shape #
Out[127]: (4, 6)
In[130]: a.T # , transponse
Out[129]:
array([[ 0, 6, 12, 18],
[ 1, 7, 13, 19],
[ 2, 8, 14, 20],
[ 3, 9, 15, 21],
[ 4, 10, 16, 22],
[ 5, 11, 17, 23]], dtype=int32)
さらに、多次元配列のflatプロパティには、「フラット反復」――flatiterオブジェクトが与えられ、1次元配列のように高次元配列を反復できます.
In[134]: for item in array([1, 2, 3, 4]).reshape(2, 2).flat:
... print(item)
...
1
2
3
4
flatiterオブジェクトは、複数の要素を直接取得し、変更を直接割り当てることができます.
In[140]: af = a.flat
In[141]: af[:]
Out[140]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23], dtype=int32)
In[143]: af[3] = 15
In[144]: af[:]
Out[143]:
array([ 0, 1, 2, 15, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23], dtype=int32)
1.7行列の生成
マトリクスを2次元配列でシミュレートできると述べたが、numpyはマトリクスを処理するためのデータ構造を専門に提供している.
matrix
関数構造によって生成される.
In[8]: m = mat('1 2 3; 4 5 6; 7 8 9')
In[9]: m
Out[9]:
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
2 D配列とマトリクスは簡単に変換できます.
In[11]: array(m)
Out[11]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In[12]: mat(_)
Out[12]:
matrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
matrixでマトリクスを処理するのが便利で、次のような方法があります.
逆を求める:
In[17]: m.I
Out[17]:
matrix([[ -4.50359963e+15, 9.00719925e+15, -4.50359963e+15],
[ 9.00719925e+15, -1.80143985e+16, 9.00719925e+15],
[ -4.50359963e+15, 9.00719925e+15, -4.50359963e+15]])
ブロックマトリクス:
In[25]: I = eye(3)
In[26]: bmat('m I; I m')
Out[26]:
matrix([[ 1., 2., 3., 1., 0., 0.],
[ 4., 5., 6., 0., 1., 0.],
[ 7., 8., 9., 0., 0., 1.],
[ 1., 0., 0., 1., 2., 3.],
[ 0., 1., 0., 4., 5., 6.],
[ 0., 0., 1., 7., 8., 9.]])
2データ処理
2.1条件判断と検索
where関数を使用すると、条件を満たすインデックスが得られ、後期処理が容易になります.
In[219]: a = arange(24).reshape(4, 6)
In[220]: where(a>8)
Out[219]:
(array([1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3], dtype=int32),
array([3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5], dtype=int32))
mat
関数を使用して、1次元配列の条件を満たす値をフィルタできます.
In[28]: a[0, :].compress(a[0, :] > 2)
Out[28]: array([3, 4, 5])
2.2 CSVファイルの読み書き
CSV(カンマ分割値)フォーマットは配列や行列を簡単に保存できます.pythonのpickleメソッドに比べて、CSVファイルとして保存するには、一般的なテキストエディタでいつでも開くことができます.CSVファイルの保存と読み取りは簡単です.
In[190]: b
Out[189]:
array([[ 0, 2, 4, 6, 8, 10],
[12, 14, 16, 18, 20, 22],
[24, 26, 28, 30, 32, 34],
[36, 38, 40, 42, 44, 46]])
In[191]: savetxt("b.txt", b, delimiter=",")
In[192]: b1, b2 = loadtxt("b.txt", delimiter=",", usecols=(3, 4), unpack=True)
In[193]: b1, b2
Out[192]: (array([ 6., 18., 30., 42.]), array([ 8., 20., 32., 44.]))
保存時パラメータ
compress
オプションで配列の各要素を区切るために使用され、読み出し時にもその値を指定し、読み出し時にデータの一部のみを読み込むこともできるdelimiter
選択した列を指定するために使用されるusecols
Trueに設定した場合はこれらの列を別々に格納することを示す.時間などの文字列に遭遇した場合、パラメータconvertersを指定することで変換できます.
In[252]:
def datestr2num(s):
return datetime.datetime.strptime(str(s, encoding="utf-8"), "%Y-%m-%d").date().weekday()
weeks, numbers = loadtxt("b.txt", converters={0:datestr2num}, unpack=True)
In[253]: weeks
Out[252]: array([ 2., 4.])
2.3汎用関数
unpack
関数を使用すると、単一の数値に作用する関数を配列に作用する関数にマッピングできます.
In[49]: def f(i):
... return 2*i
...
In[50]: ff = frompyfunc(f, 1, 1)
In[52]: ff(a)
Out[52]:
array([[0, 2, 4, 6, 8, 10],
[12, 14, 16, 18, 20, 22],
[24, 26, 28, 30, 32, 34],
[36, 38, 40, 42, 44, 46]], dtype=object)
frompyfunc
の2つのパラメータはそれぞれ入力パラメータと出力パラメータの個数を定義するさらにnumpyは、add、subtract、multiply、divideなどの一般的な汎用関数を提供する.汎用関数には、add関数を例に、reduce、accumulate、reduceat、outerの4つの方法があります.
In[64]: add.reduce(a[0, :])
Out[64]: 15
In[65]: add.accumulate(a[0,:])
Out[65]: array([ 0, 1, 3, 6, 10, 15], dtype=int32)
In[69]: add.reduceat(a[0, :], [0, 5, 2, 4])
Out[69]: array([10, 5, 5, 9], dtype=int32)
In[70]: add.outer(a[0, :], a[1, :])
Out[70]:
array([[ 6, 7, 8, 9, 10, 11],
[ 7, 8, 9, 10, 11, 12],
[ 8, 9, 10, 11, 12, 13],
[ 9, 10, 11, 12, 13, 14],
[10, 11, 12, 13, 14, 15],
[11, 12, 13, 14, 15, 16]])
reduceは汎用関数をすべての要素に再帰的に作用させ、最後の結果を得ることができる.accumulateもすべての要素に再帰的に作用しますが、中間結果を保持して返します.reduceatは、指定した開始点に基づいて累積演算を行い、終点が始点より小さい場合は終点の値を返します.最後にouterは,2つの入力配列のすべての要素の組合せを演算する.
3科学計算
3.1統計分析
3.1.1基本統計分析
AVerage関数は、重み付け平均値を非常に容易に計算したり、meanで算術平均値を計算したりすることができます.
In[204]: a = array([1, 2])
In[205]: average(a, weights=[1,2])
Out[204]: 1.6666666666666667
基本統計分析関数は以下のように整理される.
中位数:
frompyfunc
分散:median
標準差:var
差分:std
最値:diff
・max
・min
・argmax
・(後2つで最値を得た下付き)3.1.2ランダムプロセス分析
3.2線形代数
各要素が0~1以内の乱数の行列を作成します.
In[47]: a = mat(fromiter((random.random() for i in range(9)), dtype = float32).reshape(3, 3))
In[48]: a
Out[48]:
matrix([[ 0.45035544, 0.53587919, 0.57240343],
[ 0.54386997, 0.16267321, 0.97020519],
[ 0.6454953 , 0.38505632, 0.94705021]], dtype=float32)
次に、次のようなさまざまな線形代数の操作を行うことができます.
逆を求める:
In[49]: a.I
Out[49]:
matrix([[-10.71426678, -14.01229095, 20.83065987],
[ 5.42686558, 2.7832334 , -6.13131571],
[ 5.09620285, 8.41894722, -10.64905548]], dtype=float32)
解線形方程式グループ(ポイント積で結果を検証):
In[59]: b = fromiter((random.random() for i in range(3)), dtype = float32)
In[60]: b
Out[60]: array([ 0.56506187, 0.99419129, 0.70462942], dtype=float32)
In[61]: linalg.solve(a, b)
Out[61]: array([-5.3072257 , 1.51327574, 3.74607611], dtype=float32)
In[63]: dot(a, _)
Out[63]: matrix([[ 0.56506193, 0.99419105, 0.70462948]], dtype=float32)
フィーチャー値とフィーチャーベクトルを求めます.
In[64]: linalg.eig(a)
Out[64]:
(array([ 1.78036737, -0.08517434, -0.13511421], dtype=float32),
matrix([[-0.5075314 , -0.82206506, 0.77804375],
[-0.56222379, 0.4528676 , -0.57155234],
[-0.65292901, 0.34513769, -0.26072171]], dtype=float32))
行列:
In[81]: linalg.det(a)
Out[81]: 0.020488938
Pythonに関する詳細について興味のある読者は、「Python数学演算テクニックまとめ」、「Pythonデータ構造とアルゴリズムチュートリアル」、「Python関数使用テクニックまとめ」、「Python文字列操作テクニックまとめ」、「Python入門と進級経典チュートリアル」、「Pythonファイルとディレクトリ操作テクニックまとめ」を参照してください.
ここではPythonプログラムの設計に役立つことを願っています.