NumPy配列は、作成時に固定サイズになります。これは、Pythonリスト(動的に大きくなる可能性があります)とは異なります。 ndarrayのサイズを変更すると、新しい配列が作成され、元のデータが削除されます。
NumPy配列の要素はすべて同じデータタイプである必要があるため、メモリ内のサイズは同じになります。配列の要素が配列(Pythonネイティブ配列またはndarrayのいずれか)でもある場合、それらは多次元配列を形成します。
NumPy配列は、大量のデータに対する高度な計算やその他のタイプの操作を容易にします。一般に、このような操作は、Pythonの組み込みシーケンスを使用するよりも効率的で、必要なコード実行が少なくて済みます。
python
# すべて0の2x2配列を作成します
a = np.zeros((2,2))print(a)
out:[[0.0.][0.0.]]
# すべてのものの1x2配列を作成します
b = np.ones((1,2))print(b)
out:[[1.1.]]
# 値が7の2x2配列を作成します
c = np.full((2,2),7)print(c)
out:[[77][77]]
# 2x2 IDマトリックスを作成します(対角要素は1です)
d = np.eye(2)print(d)
out:[[1.0.][0.1.]]
# 10の対角線を作成します,20,30,50の対角行列
d_1 = np.diag([10,20,30,50])print(d_1)
out:[[10000][02000][00300][00050]]
# 1次元の0を作成します-14の配列
e = np.arange(15)print(e)
out:[01234567891011121314]
# 一次元の4を作成します-9の配列
e_1 = np.arange(4,10)print(e_1)
out:[456789]
# 一次元を作成する1-13と3の間隔の配列
e_2 = np.arange(1,14,3)print(e_2)
out:[1471013]
# 0で1次元の範囲を作成します-10、長さ6の配列
f = np.linspace(0,10,6)print(f)
out:
# 各要素の間隔は等しく、つまり(10-0)/(6-1)=2.最後の10を含めたくない場合は、パラメーターエンドポイントを追加できます= False
[0.,2.,4.,6.,8.,10.]
# arangeによって作成された1次元配列を3行4列の2次元配列に変換します
g = np.arange(12).reshape(3,4)print(g)
out:
# 注:形状変更変換を使用する前後のデータ量は同じである必要があります、12= 3x4
[[0,1,2,3],[4,5,6,7],[8,9,10,11]]
# 2 x2ランダム配列(マトリックス),値の範囲は[0.0,1.0)(0を含み、1を含まない)
h = np.random.random((2,2))print(e)
out:[[0.727769660.94164821][0.046526550.2316599]]
# で値の範囲を作成します[4,15)、2行2列のランダム整数行列
i = np.random.randint(4,15,size =(2,2))print(i)
out:[[6,5],[5,9]]
# 0の平均値と0の標準偏差を作成します.1の正規分布からランダムにサンプリングされた3x3マトリックス
j = np.random.normal(0,0.1,size =(3,3))print(j)
out:[[-0.20783767,-0.12406401,-0.11775284],[0.02037018,0.02898423,-0.02548213],[-0.0149878,0.05277648,0.08332239]]
python
# 特定の要素にアクセスしてください。ここでは、自分でもっと試すことができます
# 1次元配列の要素にアクセスするには、括弧内にインデックスを入力します
print(np.arange(6)[3])
out:3
# 2次元配カラムの要素にアクセスするには、括弧に入力します[行,カラム]print(np.arange(6).reshape(3,2)[1,1])
out:3
# 括弧内の3桁の配列の要素にアクセスします[グループ、行、列]print(np.arange(12).reshape(2,3,2)[0,1,1])
out:3
# 要素を変更するには、=割り当てて置き換えるだけです
a = np.arange(6)
a[3]=7 #最初にアクセスしてから、再割り当てします
print(a)[012745]
ここで注意する必要があるのは、軸のパラメータです。2次元データでは、axis = 0は行の選択を意味し、axis = 1は列の選択を意味しますが、0が行を意味し、1が列を意味すると機械的に考えることはできません。2次元データの前提では注意してください。 。
3Dデータでは、axis = 0はグループ、1は行、2は列を意味します。どうしてこれなの?念のため、グループ、行、列は3桁の配列の形でどのようにソートされていますか?
== aの値を変更する場合は、==を再割り当てする必要があります。
python
a = np.arange(6).reshape(2,3)
np.delete(a,[0],axis =0)print(a)array([[0,1,2],[3,4,5]]) #元のデータは変更されていません
a = np.delete(a,[0],axis =0) #再割り当て
print(a)array([[3,4,5]]) #元のデータが変更されました
ndarrayに要素を追加する方法は、python listに似ています。一般的に使用される方法は、次の2つです。
python
構文は次のとおりです。np.append(ndarray, elements, axis)
python
構文は次のとおりです。np.insert(ndarray, index, elements, axis)
パラメータには、新しい要素を挿入する位置を示すインデックスがもう1つあります。
python
a[:,:-1]最後の列を削除します
a[:,-1]最後の列のみを保持する
python
データの最後の列を列として取得します。
a[:,3:]
out:array([[3],[7],[11],[15]])
python
データの最後の列を1次元配列の形式で取得します。
a[:,-1]
out:array([3,7,11,15])
Code
使用される関数はnpです.diag(ndarray, k=N)、ここで、パラメータkの値は、データを選択する対角線を決定します。
デフォルトk=0、メインの対角線を取ります。
k =1時、メイン対角線の上段の要素を取ります。
k =-1時に、メインの対角線の下の行の要素を取得します。
python
# 2次元配列の一意の値を表示します
a =[[0,1,2],[3,4,5],[0,1,2]]print(np.unique(a))array([0,1,2,3,4,5])
# 内の唯一の行を表示します(つまり、重複する行はありません)
print(np.unique(a,axis =0))array([[0,1,2],[3,4,5]])
# の唯一の列を表示する
print(np.unique(a,axis =1))array([[0,1,2],[3,4,5],[0,1,2]])
# の最初の行の一意の値を表示します
print(np.unique(a[0]))array([0,1,2])
Code
X[X >10] #配列Xで10より大きいデータをフィルタリングする
python
np.intersect1d(x,y) #xとyの交点を取ります
np.setdiff1d(x,y) #xとyの差を取り、xの要素を返しますが、yの要素は返しません
np.union1d(x,y) #xとyの和集合を取る
Code
合格できます+、-、*、/またはnp.add、np.substract、np.multiply 、np.2つのマトリックスに対して要素レベルの加算、減算、乗算、および除算の操作を実行するには、除算します。これは要素レベルの操作であるため、2つのマトリックスの形状は同じであるかブロードキャスト可能である必要があります。(Broadcast)。
ここでのいわゆるブロードキャスト可能とは、2つの行列AとBの形状に一貫性がない場合でも、AをBと同じ形状の整数行列に分割できるため、要素レベルの操作を実行する場合、Aが最初に実行されることを意味します。分割し、Bで操作を実行してから、結果を結合します。これが「ブロードキャスト」マトリックスです。
np.sort()およびndarray.sort()を使用してndarrayをソートします。
Code
同じです:
どちらもパラメータ軸を使用して、軸に従って並べ替える軸を決定できます。=0、軸で列で並べ替え=行ごとに1で並べ替えます。
違いは次のとおりです。
np.sort()元の配列は変更されません; ndarray.sort()元の配列を変更します
Recommended Posts