Python で Numpy を始める

WBOY
リリース: 2016-06-16 08:44:20
オリジナル
1359 人が閲覧しました

1. Numpy とは

Numpy は行列演算関数を提供する Python 用の科学技術計算ライブラリで、一般的に Scipy や matplotlib と併用されます。実際、list はすでに行列のような表現を提供していますが、numpy はさらに多くの関数を提供します。 matlab と scilab に慣れている場合は、numpy から始めるのが良いでしょう。 次のコード例では、numpy が常に最初にインポートされます。

コードをコピーします コードは次のとおりです。 > > np としてインポート >>> np.version.version
1.6.2


2. 多次元配列


多次元配列のタイプは numpy.ndarray です。

numpy.array メソッドを使用します

リスト変数またはタプル変数をパラメーターとして使用して 1 次元配列を生成します:

コードをコピー

コードは次のとおりです: > ;>> print np.array([1,2,3,4])[1 2 3 4]>>> print np.array((1.2,2,3, 4))[ 1.2 2. 3. 4. ]
>>> print type(np.array((1.2,2,3,4)))


リスト変数またはタプル変数を要素として含む 2 次元配列を生成します:


コードをコピーします
コードは次のとおりです: >>> print np.array([[1,2],[3,4]])[[1 2] [3 4] ]

配列の生成 このとき、numpy.int32、numpy.int16、numpy.float64 などのデータ型を指定できます:


コードをコピーします
コードは次のとおりです:>>> print np.array((1.2,2,3,4), dtype=np.int32) [1 2 3 4]

numpy.arange メソッドを使用します


コードをコピーします
コードは次のとおりです> print np.arange(15)[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]>> ;> print type(np.arange(15))

>>> print np.arange(3,5)
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
>>> 印刷タイプ(np.arange(15). reshape(3,5))



numpy.linspace メソッドを使用します

たとえば、1 から 3 までの 9 個の数値を生成するには:

コードをコピーします

コードは次のとおりです: > >> print np.linspace(1,3,9)[ 1. 1.25 1.5 1.75 2. 2.25 2.5 2.75 3. ]

numpy.zeros、numpy を使用します.ones、numpy.eye などのメソッドは特定の行列を構築できます

例:

コードをコピー

コードは次のとおりです:>>> zeros((3 ,4))[[ 0. 0. 0. 0.] [ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
> >> print np.ones((3,4))
[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
>>> print np.eye(3)
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0 . 0. 1.]]

3 次元配列を作成します:


コードをコピーします
コードは次のとおりです: >>> print np.zeros((2,2,2))[[[ 0. 0.] [ 0. 0.]]

[[ 0. 0.]
[ 0. 0.]]]

配列の属性を取得します:



コードをコピーします
コードは次のとおりです: >>> a = np.zeros((2,2,2))> ;>> print a.ndim #配列の次元3
>>> print a.shape #配列の各次元のサイズ
(2, 2, 2) )
>>> ; print a.size #配列内の要素の数
8
>>> print a.dtype #要素の型
float64
> ;>> print a.itemsize #各要素が占めるバイト数
8



配列インデックス、スライス、代入


例:

コードをコピー

コードは次のとおりです:

>>> a = np.array( [[2,3,4],[5,6,7]] )
>>> print a
[[2 3 4]
[5 6 7]]
>>> print a[1,2]
7
> print a[1,: ]
[5 6 7]
>>> a[1,1:2]
[6]
>>> 8,9,10]
>>> print a
[[ 2 3 4]
[ 8 9 10]]
要素を操作するには for を使用します
コードをコピー コードは次のとおりです。

>>> np.linspace( 1,3, 3):
... print x
...
1.0
2.0
3.0


基本的な配列操作

最初に配列 a と b を構築します:

コードをコピー コードは次のとおりです:

>>> ; a = np.ones((2,2))
>>>>b = np.eye(2)
>>>[1. 1. ]
[ 1. 1.]]
>>> print b
[[ 1. 0.]
[ 0. 1.]]
加算、配列の減算、乗算、除算:

コードをコピー コードは次のとおりです。
>>> a > 2
[[False False]
[False False]]
>>> print a+b
[[ 2. 1.]
[ 1. 2 .]]
>> print a-b
[[ 0. 1.]
[ 1. 0.]]
>>> print b*2 [[ 2. 0.]
[ 0. 2.]]
>>> print (a*2)*(b*2)
[[ 4. 0.]
[ 0. 4.]]
>>> print b/(a*2)
[[ 0.5 0. ]
[ 0. 0.5]]
> > print (a*2)** 4
[[ 16. 16.]
[ 16. 16.]]

配列オブジェクトに付属のメソッドを使用します:


コードをコピーします コードは次のとおりです: > ;>> a .sum()
4.0
>>> a.sum(axis=0) #各列の合計を計算します (2 次元の行列に似た列) array)
array([ 2. , 2.])
>>> a.min()
1.0
>>> 1.0


numpy のメソッドを使用します:


コードをコピーします

コードは次のとおりです: >>> ; np.sin (a)array([[ 0.84147098, 0.84147098],
[ 0.84147098, 0.84147098]])
>>> np.max(a)
1.0
> ;> ;> np.floor(a)
array([[ 1., 1.],
[ 1., 1.]])
>>> exp(a)
配列 ([[2.71828183, 2.71828183],
[2.71828183, 2.71828183]])
& gt; & gt; ## 行列乗算
配列 2., 2.],
[ 2., 2.]])


配列を結合


numpy で vstack 関数と hstack 関数を使用します。


コードをコピーします

コードは次のとおりです。 >> a = np.ones((2,2))>>> b = np.eye(2)>>> b))[[ 1. 1.] [ 1. 1.]
[ 1. 0.]
[ 0. 1.]]
>>> print np.hstack ((a,b))
[[ 1. 1. 1. 0.]
[ 1. 1. 0. 1.]]


これら 2 つの関数にシャロー コピーの問題が含まれているかどうかを確認します。


コードをコピーします

コードは次のとおりです:

>>> c = np.hstack((a,b))>>> print c[[ 1. 1. 1. 0.] [ 1. 1 . 0. 1.]]>>> a[1,1] = 5
>>> b[1,1]> print c
[[ 1. 1. 1. 0.]
[ 1. 1. 0. 1.]]

a と b の要素が変化していることがわかります。影響を与えていない c.



ディープコピー配列

配列オブジェクトにはシャロー コピー メソッドとディープ コピー メソッドがありますが、一般的にはディープ コピーの方がよく使用されます:


コードをコピー

コードは次のとおりです:


>>> a = np.ones((2,2))

>>> b = a>>> True>>> c = a.copy() #ディープ コピー>>> c は False


基本的な行列演算


移調:

コードをコピー コードは次のとおりです:


>>> a = np.array([[1,0],[2,3]])
>>> print a
[1 0 ]
[2 3]]
>>> print a.transpose()
[[1 2]
[0 3]]
トレース:
コードをコピー コードは次のとおりです:
>>> print np.trace(a)
4
numpy.linalg モジュールには行列演算のメソッドが多数あります:
コードをコピーします コードは次のとおりです:

>>> ; numpy.linalg を nplg としてインポートします

固有値、固有ベクトル:

コードをコピー コードは次のとおりです。

>>> . eig(a)
(array([ 3., 1.]), array([[ 0. , 0.70710678],
[ 1. , -0.70710678]]))

3. マトリックス

Numpy は行列オブジェクトを構築することもできますが、ここでは説明しません。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート