オリジナル: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
著作権:この記事はブロガーのオリジナルの記事、再現され、ボーエンのリンクを添付してください!