numpyの的配列

オリジナル:https://blog.csdn.net/fu6543210/article/details/83240024

なぜ使用numpyの

    Pythonは配列のように使用することができる容器のリストを提供します。しかし、リスト要素は、任意のオブジェクトとすることができるので、リストは単純なリスト[1,2,3]を保持するために、ように、オブジェクトへのポインタに格納されています。これは3つのポインタと整数3つのオブジェクトが必要です。数値計算のために、このような構造は明らかに十分に効率的ではありません。
    Pythonがモジュールのアレイを提供するが、唯一の一次元アレイをサポートしていますが、それは多次元(理解される傾向があるTensorFlowマトリックス中)配列、また各種の演算機能をサポートしていません。そして、適当な数値計算ではありません。
    numpyのは、これらの欠点を補うために現れました。

( - 「Pythonの科学計算」から取らCHEMICAL)


NPとしてnumpyのインポート

アレイの作成

##従来の作成方法
A = np.array([2,3,4])
B = np.array([2.0,3.0,4.0])
C = np.array([1.0,2.0]、[3.0,4.0 ]])
D = np.array([1,2]、[3,4]、DTYPE =コンプレックス)を指定データ型#1
印刷A、a.dtypeの
印刷B、b.dtypeの
プリントC、c.dtypeの
印刷D、d.dtype


[2 3 4] INT32
[2. 3. 4]のfloat64
[1 2]
 [3。4]のfloat64
[[1 + 2 + 0.j 0.j]
 [3 + 0 .J 4 + 0.j]] complex128


共通機能アレイ
プリントnp.arange(0,7,1、DTYPE = np.int16 )#0 を起点として、間隔が1がデフォルト(既定が曖昧によって引き起こされていない)であってもよいで
印刷np.ones((2,3- 、4)、DTYPE = np.int16) #2 ページ、3行目、4、全体、データ型指定
印刷np.zeros((2,3,4))# 2 ページ、3行目、4、全体を0
印刷np.empty((2,3))#の値はメモリに依存する
印刷np.arange(0,10,2)10を超えない始点として#0、2のステップサイズ
印刷np.linspace(-1,2 5点取る5)-1#始点、終点2、
ランダム整数印刷np.random.randint(0,3、(2,3) )# 0よりも未満3,2行3列


[0 1 2 3 4 5 6]
[[[1 1 1 1]
  、[1 1 1 1]
  、[1 1 1 1]

 [1 1 1 1]
  、[1 1 1 1]
  、[1 1 1 1]]]
[[[0 0 0 0]
  [0 0 0 0]
  [0 0 0。 0]

 [0 0 0 0]
  [0 0 0 0]
  [0 0 0 0]]]
[[1.39069238e-309 1.39069238e-309 1.39069238e-309]
 [1.39069238 309-1.39069238e E-309 1.39069238e-309]
[0 2 4 6 8]
[-1。-0.25夜12時51分25秒2]
[1 0 1]
 [0 1 0]


 型変換は、
フロート(1)印刷
印刷INT(1.0)
プリントBOOLを(2)
フロート(true)を印刷


1.0
1

1.0


アレイ出力

    上から下へ、左から右に
    マトリックス・リストに3次元配列を印刷行、印刷の2次元マトリクスアレイを印刷するために一次元アレイ

np.arangeプリント(1,6,2)
印刷np.arange .reshape(3,4-)#形状が出力変更することができる(12)と
、印刷np.arange(24).reshape(2,3,4 )#2 、ページをライン3、4


[1 3 5]
[0 1 2 3]
 [4 5 6 7]
 [8 9 10 11]
[[[0 1 2 3]
  [4 5 6 7]
  [8 9 10 11]

 [12 13 14 15]
  、[16 17 18 19]
  [20 21 22 23]]]


基本的な操作

ステージ演算素子##
A = np.array([1,2,3,4])
B = np.arange(4)
印刷A、B
プリントAB&
印刷* Bは
印刷A ** 2
プリント2 * np.sin (A)
プリントA> 2
印刷np.exp(A)インデックス#


[1 2 3 4] [0 1 2 3]
[1 1 1 1]
[0 2 6 12]
[1 4 9 16]
[1.68294197 1.81859485 0.28224002 -1.51360499]
[FALSE FALSE TRUE TRUE]
[2.71828183 7.3890561 20.08553692 54.59815003]


##行列演算(二次元アレイ)
A = np.array([1,2]、[3,4])#2行2
B = np.arange(6).reshape( (2、-1 ))#2行3
を印刷A、Bの
印刷a.dot(B)行3列#2


[1 2]
 [3 4] [0 1 2]
 [3 4 5]
[6 9 12]
 [12 19 26]


##アレイのオペレータではなく、メソッドを呼び出す
np.random.randint =(0,5、(2,3))
プリント
)(印刷a.sumを、a.sum(軸= 1)、a.sum(0) #軸は、操作軸を指定(デフォルトすべてを、または0.1を指定することができる)
印刷a.min()、a.max(軸= 1)、a.mean#軸= 0(軸= 1):カラムによって算出列を、軸= 1:計算行
印刷a.cumsum(1)#行と累積を算出します


[2 3 3]
 [0 2 1]
11 [8 3] [2 5 4]
0 [3 2] [2.66666667 1]
[2 5 8]
 [0 2 3]


インデックス、スライス、反復

##一次元アレイ
np.arange =(0,10,1)** 2
印刷
印刷A [0]、A [2]、Aは[-1]、Aは、[-2]#インデックスは、0から始まります-1最後のインデックスである
[5 2]、印刷 [-5:-1]# 起点を含む、エンドポイントが含まれていない
[-1] = 100;印刷 # 割り当てを
[1:4] = 100 。 割り当てられた一括プリント#
= [2:6] #印刷、-100 第インデックスに最初から割り当てられたが、すべての要素(ステップ2 =)
印刷#; :: -1]を印刷逆の出力、それ自体変化
[np.sqrt(np.abs(I B = Iにおいてため))];#bを印刷トラバースすることによって割り当て


[0 1 4 9 16 25 36 49 64 81]
0 4 81 64
[4 9 16] [25 36 49 64]
[0 1 4 9 16 25 36 49 64 100]
[0 100 100 100 16 25 36 49 64 100 ]
[-100 100 -100 100 -100 25 36 49 64 100]
[100 64 49 36 25 -100 100 -100 100 -100]
[-100 100 -100 100 -100 25 36 49 64 100]
[10.0、10.0 、10.0、10.0、10.0、5.0、6.0、7.0、8.0、10.0]


多次元アレイ##
A = np.arange(0,20).reshape((4,5))
を印刷A、A [2,3]、A [:1]、[1:4,2]、A :[13]
プリント[-1]#は、に対応する場合[-1:]、すなわち、軸の数が指数未満で、インデックスは、スライス全体デフォルトありません

np.arange = B(0,24).reshape((2,3,4))
プリントB、B#はbに相当する[1] [1:、:] [1、...]とBの
印刷' -------------------「
行のために:
    印刷行番号が第一の軸にトラバースベース


[0 1 2 3 4]
 [5 6 7 8 9]
 [10 11 12 13 14]
 [15 16 17 18 19] 13 [1 6 11 16] [7 12 17] [[5 6 7 8 9]
 [10 11 12 13 14]
、[15 16 17 18 19]
[[[0 1 2 3]
  [4 5 6 7]
  [8 9 10 11]

 [12 13 14 15]
  、[16 17 18 19]
  [20 21 22 23]]]

 [12 13 14 15]
 、[16 17 18 19]
 [20 21 22 23]
-------------------
[0 1 2 3 4]
[5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]


運転形状

np.floor =(10 *のnp.random.random((3,4-)))
形状a.shape#出力印刷
自体は変わりません(ポスト()#出力平坦化a.ravel印刷を)
a.shape =(6,2)の形状変化印刷#
転置印刷a.transposeを()#出力


[0 4 3 2]
 [1 1 3 3]
 [4。4. 6. 5](3、4)
[0 4. 3. 2. 1. 1。 3. 3. 4. 4. 6 5]
[0 4]
 [3 2]
 [1 1]
 [3 3]
 [4。4]
 [6。5] ]
[0 3. 1. 3. 4. 6]
 [4。2. 1. 3. 4. 5.]


##補足:再形成およびリサイズ
A = np.array([1,2,3]、[4,5,6]])
B =
a.reshape((3,2))アレイ自体#を変更しません形状
印刷
b.resizeを((3,2))#アレイ自体は、形状変化
プリントBを


[1 2 3]
 [4 5 6]
[1 2]
 [3 4]
 [5,6]

---------------------


numpyのモジュールでは、我々は多くの場合、特定の使用では、リサイズを使用し、再構築は通常、アレイサイズのリサイズを変更するために使用され、配列のサイズを大きくするために使用し再形成。


1.resize

誰かが他の人のブログは、言った1が直接変更するために、元のデータには戻り値ではありません、2つの方法で使用、サイズ変更、サイズ変更使用方法に応じて、実際には、戻り値のサイズを変更していない見て前に、使い方がされています値を返し、それは元の配列の値を変更しないであろう。

1.1は、戻り値を持つ、元のデータは変更されません。

    NPとしてnumpyのインポート
    X = np.array([1,2,3,4]、
                  [5,6,7,8]、
                  [9,10,11,12]])
     
    X_new = np.resize(X、 (3,3))#が変化しない元のXの
    印刷( "X:\ n"は、X)#original X
    プリント( "X_new:の\ n"、X_new)#新しいX
    >>
    X:
     [1 2 3 4]
     [5 6 7 8]
     [9 10 11 12]
    X_new:
     [1 2 3]
     [4 5 6]
     [7 8 9]


1.2戻り値、直接配列の元のサイズを変更しません

    NPとしてインポートnumpyの
    X = np.array([1,2,3,4]、
                  [5,6,7,8]、
                  [9,10,11,12]])
     
    X_2 = X.resize((3 、3))の元Xを#change、および値の返しません
    印刷( "X:\ n"を、X)#変更元Xの
    印刷( "X_2:\ nを"、X_2)#リターンなし    
    :X
     [[ 1 2 3]
     [4 5 6]
     [7 8 9]
    X_2:
     なし



2.reshape

の形状を変更せずに、新たなデータの配列に

    NPとしてインポートnumpyの
    X = np.array([1,2,3,4,5,6,7,8])
     
    X_2 = X.reshape((2,4))2×4 2次元のアレイ#retuen
    2 * 2 * 2 3次元のアレイretuen X_3 = X.reshape((2,2,2))#
     
    プリント( "X:\ n"は、X)
    の印刷( "X_2:\ n"は、X_2)
    プリント( "X_3:の\ n"、X_3)
     
    >>
    X:
     [1 2 3 4 5 6 7 8]
    X_2:
     [1 2 3 4]
     [5 6 7 8]
    X_3:
     [[[1 2]
      [3 4 ]
     
     [5,6]
      、[7~8]]]



---------------------
著者:インクXiaobai
---------------------  
著者:furuit  
ソース:CSDNの  
元ます。https://blog.csdn.net/fu6543210/article/details/83240024  
著作権:この記事はブロガーのオリジナルの記事、再現され、ボーエンのリンクを添付してください!

おすすめ

転載: blog.csdn.net/lxlong89940101/article/details/90700552