ベクトル
ベクターが指す束番号形成組
多次元配列と呼ばれるベクトル計算
シングル数はスカラーと呼ばれます
二多次元配列
- 多次元配列のnumpyの定義:
numpy.ndarrayタイプの(n個の代表N、D代表dimision寸法)
Ndarray自体は、このクラスのクラスは、多次元配列である、オブジェクトをインスタンス化されます
多次元配列は、オブジェクトであります
多次元配列オブジェクトを作成します。
1> numpy.arange(開始、終了、ステップ)
彼はnumpyのを介してアクセスされます。numpyの関数です
これは、アレイが算術配列で返し1次元配列
2> numpy.array()
配列は、クラスではないnumpyの関数であります
numpy.array関数を括弧()内に、入力は、任意の配列の容器(またはタプルのリスト)として解釈することができます
3>配列要素タイプを取得する方法:
d = np.array([[1,2,3],[4,5,6]]) 方法一: type(d[0][0]) #==>python取类型的方法 方法二: d.dtype #==> numpy 取类型的方法
4> 32は、4バイトの整数を表し、int型
なぜint32ですか?
特定の型を定義で指定され、現在データdを保存するだけで4バイトのプラスチックを使用していません、
したがって、デフォルト値は4バイトのデフォルトです。..
の意味5> <U1
g=np.array(['1','2','3']) print(g.dtype) # <U1 print(type(g[0])) #<class 'numpy.str_'>
- Unicodeは各4つのバイトをコードする。ハイとローのポイント。リトルエンディアンとビッグエンディアンに
- 「U」は、ユニコード符号化の代表であります
- 「<」リトルエンディアンを示します
- 「1」は、各文字列の唯一の文字を表し
6> 'numpy.str_' の意味
- strが文字列を表し
- _、Python文字列として区別
7>手動文言のタイプを指定します
G=np.array(['1','2','3'],dtype=np.int32) print(G.dtype) #int32 H=G.astype(np.str_) print(H.dtype) #<U11
- 「限り、指定されたタイプの手動設定として、それを行うには、データの種類を自動的に変換されます。値は文字列ですが、私たちは、Int32型のプラスチックをターゲットにしているので、それはint型32です」
- シーン:で、文字列形式に戻す変更するastypeの機能
- <U11説明:タイプがメモリ内のいくつかのスペースを確保するために戻って、再び変更され、
注:すべてのコンバージョンの種類と実際の変換の種類に関連していないがコピーされ、そのコピーの新しいタイプを押して、しかし、それは一定の源であります
DTYPE属性は、要素の型を取るために使用されています
8>のディメンションの属性
d = np.array([[1,2,3],[4,5,6]])
print(d.shape) #(2, 3) 2行 3列
- 形状属性:
低緯度の高い、すなわち緯度..属性値は、各次元の数を示すために、ハイからローに、それぞれ、タプル内の複数の要素を含む、タプル型形状
あなたはページランクを持っている場合
ページ:最大寸法
ライン:第二位
コラム:最小
9>手配及び配列は配列を作成することができ、あなたは時々と混合することができます
i = np.array([[np.arange(1,5),np.arange(5,9),np.arange(9,13)],[np.arange(13,17),np.arange(17,21),np.arange(21,25)]])
print(i)
# [[[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
#
# [[13 14 15 16]
# [17 18 19 20]
# [21 22 23 24]]]
私たちは、形状の属性を持つディメンションを見ることができます
ほとんど使用されない多次元配列、三次元でnumpyの
10>要素のインデックス
元素索引是从 0 开始的
数组[索引]
数组[行索引][列索引]
数组[页索引][行索引][列索引]
a=np.array([[[ 1 ,2 , 3 ,4], [ 5 ,6 , 7 , 8], [ 9 ,10 ,11 ,12]]])
print(a[0]) #[[ 1 ,2 , 3 ,4], [ 5 ,6 , 7 , 8], [ 9 ,10 ,11 ,12]]
print(a[0][0]) # [1 2 3 4]
print(a[0][0][0]) # 1
for i in range(a.shape[0]): # 0 是逐页
for j in range(a.shape[1]): # 1 是逐行
for k in range(a.shape[2]): # 2 是逐列
print(a[i][j][k])
numpyの3ビルトインタイプとカスタムタイプ
ビルトインタイプ
A)長所:
あなたはどのくらいのデータ型によって占有されていたメモリを指定することができ
、柔軟で変更することができ
B)短所:
柔軟な変動は、パフォーマンスを犠牲にして、(十分なスペースを残すために必要があるため)
固定メモリアドレスを使用することはできませんアドレスの操作は、時間実行に費やされることになるので、計算方法のみ、動的に行うことができる
注:各タイプnumpyのための固定サイズを提供する、アドレスの計算は、したがって、タイプ定義numpyのにより決定することができますデータ型のシステムとデータ型の独立した組..固定長は、バイト数が..固定されている
例:Numpy.boolブール1バイト
の符号付きバージョン(正と負の数):
INT8 1バイトのタイプの符号付き
Int16型2バイトの符号付きタイプ
のInt32 4バイトの符号付きタイプ
:符号なしのバージョン(のみ陽性)
UINT8 1バイトの符号なし
UINT16 2バイトの符号なしタイプ
Uint32のを4バイトの符号なし型の
float型:
float16 2バイトの浮動小数点符号付き
のfloat32は4バイトの浮動小数点符号付き
のfloat64 8バイトの浮動小数点符号付き
実数および虚数(複合型を :部分は、2つの4バイトの浮動小数点)で表される
。complex64 8バイト型複合
Complex128 16バイト複合型
注:図1は、2つの浮動小数点の組み合わせの複数=
ストリングタイプ:
Unicode文字の文字列の種類に応じて、文字列の長ためStr_列は、所定バイト数ではない
文字列に基づいて、文字列の長さが含まれています決定
注:lunicode = 4つのバイトは
DTYPE型変換とastypeを設定することができますカスタム・タイプ
ビルトインタイプの元の名前を直接使用
コンパクト型(エンコードされた文字列型)を使用してフォーマットは
、操作を簡素化:文字列が少ないと表すことができます。
フルネーム 簡体字形式 Numpy.int8 I1 Int16型 I2 UINT32 U4 float64 F8 Complex128 CL6 マルチバイトの整数は、サイズエンディアン
プレフィックスバイトオーダーを追加することができ、マルチバイトの整数を
接頭タイプ:
「<」低ビットリトルエンディアン下位アドレス
「=」デフォルト、人為的に指定されていない
「>」ビッグエンディアンの低い木アドレスのビット注:移植をもたらし、異なるプロセッサ上で時々によるコードの機能に互換性の問題を防止するために強制的にそう添加「<」と「>」
import numpy as np a=np.array([('ABC',[1,2,3])],dtype={'names':['name','scores'],'formats':['U3','3i4']}) print(a) #[('ABC', [1, 2, 3])] print(a[0]['name']) #ABC print(a[0]['scores'][0]) #1 print(a[0]['scores'][1]) #2 print(a[0]['scores'][2]) #3
B = np.array([0x1234の]、DTYPE =( 'U2'、{ '低ビット' :( 'U1'、0)、 '高ビット数' :( 'U1'、1)}))#
プリント( '{:X}'形式(B [0])。)#1 号0でBの16進出力素子
プリント( '{:X}、 {:X}'形式(B。 【 '下位ビット'] [0]、B [ ' 高い桁'] [0]))
`
バイトオーダーについて:
1バイトの整数、ブール、複合型、浮動小数点:エンディアンデータ型を追加することなく、
その他の例:文字のNumpy.str_ => U +数
ユニコード自体は、マルチバイト整数であるユニコードするUInt32とみなすことができ、エンディアンの大きさもあります
Numpy.bool => B
注:numpyのPythonパッケージが提供され、カスタム・タイプ・エレメントを使用する方法は、アクセスを完全に異なるタイプであってもよい;またはnumpyの均一な配列要素を構成するために組み合わされる異なるタイプの要素..
四つのセクション
そして、同様のパイソン
アレイの[スタート]:終了:ステップ]
あなたは多次元配列のためにスライスすることができます
デフォルトの開始:(Nのステップで)最初の要素、最後の要素(負のステップ) - >リバース
デフォルトの終了:尾(正段階)、最初のかつての(負のステップ)
デフォルトのステップ:1
a = np.arange(1,10)
print(a) #[1 2 3 4 5 6 7 8 9]
print(a[:3]) #[1 2 3]
print(a[3:6]) #[4 5 6]
print(a[6:]) #[7 8 9]
print(a[:-4:-1]) #[9 8 7]
print(a[...]) #[1 2 3 4 5 6 7 8 9]
print(a[:]) #[1 2 3 4 5 6 7 8 9]
print(a[1::3]) #[2 5 8]
b=np.arange(1,25).reshape(2,3,4)
print(b)
# print(b[:,0,0]) # [ 1 13]
# print(b[0,:,:])
# print(b[0,1,::2]) #[5 7]
# print(b[-1,1:,2:])
# print(b[:,1:,1])
print(b[1,1,::2]) #[17 19]
一つ以上のデフォルトのセクション:
[...] [:]
変更の五の寸法
これは、4つの方法を分割しました
可変寸法を表示します。
配列オブジェクトのビューの異なる寸法を取得します。
方法:アレイ.reshape(新次元) - > Arrayには新次元を表示
配列.ravel() - >ビューの一次元アレイ
import numpy as np a=np.array([np.arange(1,9)]) print(a) #[[1 2 3 4 5 6 7 8]] b=a.reshape(2,4) print(b) #[[1 2 3 4] [5 6 7 8]] c=b.ravel() print(c) #[1 2 3 4 5 6 7 8]
:分散次元(コピーの異なる寸法)をコピーし
、配列オブジェクトのコピーのための異なる寸法取得
の配列のコピー> -平坦化()メソッドを
関数:例を獲得しながら、元のデータのコピーを取得するために、コピーでありますd=b.flatten() print(d) #[1 2 3 4 5 6 7 8] 复制成一维 e=b.reshape(2,2,2).copy() print(e)
その場可変寸法
配列。形状=(新しい次元)
と同等の
配列。(新しい次元を)のサイズ変更a=np.array([np.arange(1,9)]) a.shape = (2,2,2) # a.resize =(2,2,2) print(a) #变成一个新的2页2行2列的三维数组
ビュー転置(線形代数の概念は)
行の入れ替えとして理解さ
)(配列転置を- 。>表示転置配列
と同等にアレイのT - 。>表示のプロパティをトランスポーズ
a=np.array([np.arange(1,9)]) a.shape = (4,2) #a是4行2列 g = a.transpose() print(g) # [[1 3 5 7] # [2 4 6 8]] print(np.array([a]).T) #先转成多维数组,再转置 print(a.reshape(-1,1)) # -1 无效值
注:デバイスは、二次元アレイ缶でなければなりません
シックス・スプリットの組み合わせ
- 縦の構図:
numpy.vstack((垂直))スタック
- 縦型スプリット:
numpy.vsplit(アレイ、部数)
列:B = np.vsplit(C、2)
Cは、分割の可変代表2に分割されている2つの部分を表し
import numpy as np a=np.arange(11,20).reshape(3,3) print(a) b=np.arange(21,30).reshape(3,3) print(b) c=np.vstack((a,b)) print(c) l,h=np.vsplit(c,2) print(l,h,sep='\n') #把c 拆分成 l 和 h 两个
- レベルの組み合わせ:
numpy.hstack((左))スタック
- スプリットレベル:
numpy.hsplit(アレイ、部数)
列:B = np.vsplit(C、2)
Cは、分割の可変代表2に分割されている2つの部分を表し
import numpy as np a=np.arange(11,20).reshape(3,3) print(a) b=np.arange(21,30).reshape(3,3) print(b) c=np.hstack((a,b)) print(c) l,h=np.hsplit(c,2) print(l,h,sep='\n')
深さと深さ分解能の組み合わせ
numpy.dstack((フロントとリア))スタック
numpy.dsplit(アレイ、部数)
c=np.dstack((a,b)) print(c) l,h=np.dsplit(c,2) print(l,h,sep='\n')
深さの組み合わせ:
- 前とレイアウト、ラインの平面を切断するために、3桁のグループを構成し、第3の垂直の配列を形成するように組み合わされ、この部分をカットします
- これら三つのセクションは、各ページに対応する行の2次元アレイを有し、また、列に行を切断するために、転置なる3ページであります
デプススプリット:
、B = np.dsplit(C、2)
-
プリント([0] T、BT [0] Tで、9月= '\ n')#T [0] Tの転置は、要素の0番サブ集合をとります
注:手操作されるように、深さ分解能の二次元配列パターンに戻るに
行/列の組み合わせ
特長:組み合わせのみを分割することはできません
()(縦)numpy.row_stackはnumpy.vstackと等価です
numpy.column_stack((略))numpy.hstackと等価です
numpy.column_stack((略))速記np.c_ [約]
ndarray 7のプロパティを確認します
- DTYPE要素型
- 形状配列の次元を
- Tの転置ビュー
- ndim次元数
- サイズの要素の数。PythonのLENの一次元配列に相当します()
- バイトnpytes要素の総数
- lenは()形状最初の要素で取得することはありません***サイズは** GETは、製品の形状であります
- 箇条書きの要素がどのように多くのバイトを占めているバイトの要素の数を
- フラットフラット得られたイテレータは、イテレータオブジェクトが反復されてもよいです
- ToListメソッド配列の変更リスト
- IMAG配列の虚部
- 実際の配列の実部
***** numpy
そこ関数法を追加しますが、戻り値を持っている必要があります
import numpy as np
a=np.array([
[1+1j,2+4j,3+6j],
[1+1j,2+4j,3+6j],
[1+1j,2+4j,3+6j]
])
print(a.dtype) #complex128 16个字节 8位是实部 8位是虚部
print(a.shape) #3行3列
print(a.ndim) #2维
print(a.size,len(a)) # 9个元素 3 列
print(a.itemsize) # 每个元素占16个字节
print(a.nbytes) # 144个字节 16* 9
print(a.T)
print(a.real,a.imag,sep='\n') # 取实部和虚部
for i in a.flat: #flat 扁平迭代器
print(i)
# ----------------------------------------------------------
#列 :
def fun(z,zz):
z.append(zz)
return z
x=np.array([1,2,3])
y=40
# x=fun(x,y) #会报错 因为数组没有append方法
x=fun(x.tolist(),y)
print(x) #[1, 2, 3, 40]
y=np.append(x,50)
print(y) #[ 1 2 3 40 50]