Python基礎知識準備-Numpy
4355 ワード
Numpy
NumpyはPythonで科学計算を行うコアライブラリの1つであり、効率的な多次元配列エンティティ(object)とこれらの配列に対する様々な機能関数を提供しています.
1.Array
同じタイプのデータのセットで、インデックスクエリ内のメタグループを非負の整数で行うことができます.初期化a)指定配列
NumpyはPythonで科学計算を行うコアライブラリの1つであり、効率的な多次元配列エンティティ(object)とこれらの配列に対する様々な機能関数を提供しています.
1.Array
同じタイプのデータのセットで、インデックスクエリ内のメタグループを非負の整数で行うことができます.
import numpy as np
a = np.array[1,2,3])
b = np.array([1,2,3],[4,5,6])
b)全零配列a = np.zeros((2,2))
a=[[0,0] [0,0]]c)全一配列b = np.ones((2,2))
b=[[1,1] [1,1]]d)全充填同一数値c = np.full((2,2),7)
c=[[7,7] [7,7]]e)単位行列(マトリクスで計算することに慣れている場合がある)d = np.eye(2)
d=[[1,0] [0,1]]f)ランダム生成行列e = np.random.random((2,2))
e=[[0.25783470,0.72843901] [0.84993205,0.23794522].Array indexing Numpyはいくつかの配列の検索方式を提供します(私も“検索”が正確かどうか分かりませんが、具体的な関数を見て何をしているのか分かります)a)スライスSlicing(原文とPythonのリスト操作があるかどうかは不明ですが、Numpyの配列もスライスできます.配列自体が多次元である可能性があるため、シートのスタイルを定義する必要があります.imoprt numpy an np
a = np.array([1,2,3,4],[5,6,7,8],[9,10,11,12]])
# a = [[1,2,3,4]
[5,6,7,8]
[9,10,11,12]]
b = a[:2,1:3]
# b = [[2,3]
[6,7]]
# b , a
print (a[0,1]) #2
print (b[0,0]) #2
b[0,0] = 77
print (a[0,1]) #77
b)整数配列インデックス整数配列インデックスでは、配列のデータを使用して新しい配列を構成できます.import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
print (a[[0,1,2],[0,1,0]]) #[1,4,5]
有用なテクニックは、マトリクスの各行から要素を選択または変更するために整数インデックスを使用することです.import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
# a = [[1,2,3]
[4,5,6]
[7,8,9]
[10,11,12]
b = np.array([0,2,0,1])
print (a[np.arange(4),b]) # [1,6,7,11]
a[np.arange(4),b] += 10
#a = [[11,2,3]
[4,5,16]
[17,8,9]
[10,21,12]
c)ブール配列インデックスブール配列インデックスを使用すると、1つの配列から任意の要素を抽出できます.通常、要素をフィルタするために使用されます.import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
bool_idx = (a>2)
print (bool_idx)
# [[False,False]
[True,True]
[True,True]]
print (a[bool_idx]) #[3,4,5,6]
print (a[a>2]) # [3,4,5,6]
3.Datatypeデータ型numpy配列は、同じタイプの要素の一連から構成されます.numpyは多くの数値タイプを提供し、ユーザーが配列を定義するときにデータのタイプを推測しようとし、配列を構築する関数には、生命データのタイプを明確にするためのオプションパラメータも含まれています.import numpy as np
x = np.array([1,2])
print(x.dtype) # int64
x = np.array([1,2],dtype = np.int64)
4.配列の数学演算import numpy as np
x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
プラスadd = x+y
add = np.add(x,y)
[[6,8][10,12]]マイナスsub = x-y
sub = np.subtract(x,y)
[[-4,-4][-4,-4]]プラスmult = x*y
mult = np.multiply(x,y)
[[5,12][21,32]]注意、*演算子は行列内の対応する位置の要素乗算を指し、行列乗算ではない.行列乗算の関数はdot()import numpy as np
x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
v = np.array([9,10])
w = np.array([11,12])
print (v.dot(w)) # 219
print (np.dot(v,w)) # 219
print (x.dot(y)) #[29,67]
print (np.dot(v,w)) #[29,67]
print (x.dot(y))
print (np.dot(x,y))
#[[19,22]
[43,50]]
除print (x/y)
print (np.divide(x,y))
開根号print (np.sqrt(x))
行列内要素求和x = np.array([[1,2],[3,4]])
print (np.sum(x)) #10
print (np.sum(x,axis=0)) #[4,6]
print (np.sum(x,axis=1)) #[3,7]
数学関数を用いるほか、行列サイズの調整やデータ調整(行列逆置きなど)import numpy as np
x = np.array([[1,2],[3,4]])
print (x)
#[[1,2]
[3,4]]
print (x.T)
#[[1,3]
[2,4]]
5を行うこともしばしば必要である.Broadcasting Broadcastingは強力なメカニズムであり,大きなマトリクス上でキー操作を行う場合,異なる形状のマトリクスを使用することができる.(英語が下手で理解できません.原文添付:Broadcasting is a powerful mechanism that allows numpy to work with array of different shapes when performing arithmetic operations.Frequently we have a smaller array and a large array,and we want to use the smaller array multiple times to perform some operation on the larger array.)やはり例を見てください.import numpy as np
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])
y = np.empty_like(x)
for i in range(4):
y[i,:] = x[i,:] + v
は上記のように1つの方法ですが、マトリクスxが非常に大きい場合、指定されたループの計算はpythonでは遅くなります.マトリクスvの各行とマトリクスxを加算することで上述した効果が得られることに注意し、ベクトルvを用いてマトリクスwを構築し、wとxを加算することができる.import numpy as np
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])
w = np.tile(v,(4,1))
y = x + w
numpyのbroadcastingでは、import numpy as np
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])
y = x + v