| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
2,961 バイト追加 、 2021年10月24日 (日) 00:49
*多次元配列を表す数学用語の[[TensorFlow|テンソル]]を利用して表すと、1階テンソル
*NumPyでは、array()でベクトルを生成する
====[https://cognicull.com/ja/oczgnusb ベクトル]====
----
*ベクトル記法 ( 1 3 5 ) をndarray で表現すると、array([1,3,5])
<math>u=\left(\begin{array}{c}u_1\\u_2\\u_3\end{array}\right)=\left(\begin{array}{c}1\\5\\9\end{array}\right),v=\left(\begin{array}{c}v_1\\v_2\\v_3\end{array}\right)=\left(\begin{array}{c}1\\0\\3\end{array}\right)</math>
 
<math>u + v=\left(\begin{array}{c}u_1+v_1\\u_2+v_2\\u_3+v_3\end{array}\right)=\left(\begin{array}{c}1+1\\5+0\\9+3\end{array}\right)=\left(\begin{array}{c}2\\5\\12\end{array}\right)</math>
 
=====ベクトル要素同士の積=====
----
*行ベクトルと列ベクトル、列ベクトルと行ベクトルの計算は可能
*行ベクトル同士、列ベクトル同士の掛け算はできない
 
====ベクトルの内積====
----
ベクトル同士の積の和を内積という
ベクトルaとbの内積は、
 
<math>{a}\cdot{b}</math>と表し、
<math>a=\left(\begin{array}{c}2\\3\\\end{array}\right)</math>と<math>b=\left(\begin{array}{c}4\\5\\\end{array}\right)</math>
の内積は第一成分同士、第二成分同士を掛けて和を求める
 
<math>{a}\cdot{b}=\left(\begin{array}{c}2\\3\\\end{array}\right)\cdot\left(\begin{array}{c}4\\5\\\end{array}\right)={2}\times{4}+{3}\times{5}=23</math>
 
ndarrayオブジェクトでは、dot()メソッド
<pre>
>>> a = np.array([2,3])
>>> b = np.array([4,5])
>>> np.dot(a, b)
23
</pre>
====リストから生成====
&gt;&gt;&gt; a
array([10, 20, 30, 40])
 
====arange を使い配列を生成====
----
====多次元配列====
----
*多次元配列で行列を表現
*NumPyは多次元配列に対応
*一次元の配列(array引数にリスト)はベクトル(vector)、二次元配列(array引数にネストされたリスト)は行列(matrix)となる
テンソルでいうと、2階テンソル
<pre>
>>> matrix = np.array([[1,2,3],
... [4,5,6],
... [7,8,9]], dtype=float)
>>> matrix
array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
</pre>
=====[https://cognicull.com/ja/vck4ud4k 行列]=====
----
*行列に書かれた数字のことを成分と呼ぶ
*[https://cognicull.com/ja/vck4ud4k 正方行列]
*[https://cognicull.com/ja/vck4ud4k 対角成分]
 
=====shape で次元を取得=====
&gt;&gt;&gt; x = ones( (3,4) )
[ 8, 9, 10, 11]])
====ベクトルの算術演算====----======スカラー演算======----*行列に対してスカラー演算を行うと、すべての成分に対して演算が行われる<pre>>>> m = np.array([[1,2,3],[4,5,6],[7,8,9]],dtype=float)>>> m + 10array([[11., 12., 13.], [14., 15., 16.], [17., 18., 19.]])</pre> ======四則演算======
----
=====四則演算=====
*ベクトルのx,y要素数が同じであれば、各要素ごとの算術演算が可能
<pre>
array([1, 2, 3])
</pre>
 ======累乗、平方根======----
<pre>
>>> x = np.array([1,2,3,4], dtype=float)
</pre>
======転置行列======----*行列の行と列を入れ替えたもの 行列Aの <math>A=\left(\begin{array}{c}{1}\quad{2}\quad{3}\\{4}\quad{5}\quad{6}\end{array}\right)</math> の転置行列、A'はは <math>A'=\left(\begin{array}{c}{1}\quad{4}\\{2}\quad{5}\\{3}\quad{6}\end{array}\right)</math> *transpose()で求められる <pre>>>> a = np.array([[1,2,3],[4,5,6]],dtype=int)>>> aarray([[1, 2, 3], [4, 5, 6]])>>> np.transpose(a)array([[1, 4], [2, 5], [3, 6]])</pre> ====参照====
*https://qiita.com/supersaiakujin/items/d63c73bb7b5aac43898a
=====箇所を指定=====
----
*行列要素へのインデックスアクセス [行開始 : 行終了, 列開始: 列終了] <pre>>>> marray([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])</pre>======1次元======
----
x[n]
 <pre>>>> m[1]array([4., 5., 6.])</pre> <pre>>>> m[1:]array([[4., 5., 6.], [7., 8., 9.]])</pre>======2次元======
----
x[n,m]
 <pre>>>> m[1:]array([[4., 5., 6.], [7., 8., 9.]])</pre> =====範囲を指定=====
----
======1次元======
----
x[start:end:step]
======2次元======
----
x[start:end:step,start:end:step]
=====行を抽出=====
----
x[r]
x[r,]
x[r,:]
=====列を抽出=====
----
x[,:c]
&lt;<blockquote&gt;>取り出した値が1次元の配列になるため注意 reshape()&lt;</blockquote&gt;> =====条件を満たすデータを取り出す=====
----
 ====操作====
----
=====次元が異なる配列の演算=====
----
======それぞれの列に掛ける======
----
&gt;&gt;&gt; x = arange(4)
&gt;&gt;&gt; x * 2
array([0, 2, 4, 6])
======それぞれの行に足し込む======
----
&gt;&gt;&gt; y = arange(10)

案内メニュー