numpyにおける配列の配列型インデックスとブール型インデックス
3401 ワード
本稿ではIndexing-arraysを参照し,この文書を理解した上で,ブール型インデックスの理解を深めるために4次元ブール型インデックスをリストした.
1.配列型インデックス
元のデータのコピーであり、ビューではない配列型インデックスの配列.
配列型インデックスの値は整数でなければなりません.インデックスの各値は、インデックスの代わりに配列で使用される値を示します.ただし、インデックス値は境界を越えてはいけません.
2.多次元配列型インデックス
3.ブールインデックス
配列型インデックスと比較して、ブール型インデックスはスライスとして異なる処理方式を有する.
ブールインデックスは、インデックス配列の初期次元と同じ形状を持つ必要があります.最もストレートな場合、ブール型インデックスは、インデックスされた配列と同じ形状を有する.
4次元配列のブールインデックスは次のとおりです.
1.配列型インデックス
元のデータのコピーであり、ビューではない配列型インデックスの配列.
配列型インデックスの値は整数でなければなりません.インデックスの各値は、インデックスの代わりに配列で使用される値を示します.ただし、インデックス値は境界を越えてはいけません.
>>> x=np.arange(10,1,-1)
>>> x[np.array([0,3,-1,8])]
array([10,7,2,2])
>>> # , , 。
>>> x[np.array([[1,1],[2,3]])]
array([[9,9],
[8,7]])
2.多次元配列型インデックス
>>> y=np.arange(35).reshape(5,7)
>>> y[np.array([0,2,4]),np.array([0,1,2])] # y[[0,2,4],[0,1,2]]
array([0,15,30])
>>> # , 。 :
>>> y[np.array([0,2,4]),1]
array([1,15,29])
>>> y[np.array([0,2,4])]
array([[0, 1, 2, 3, 4, 5, 6],
[14,15,16,17,18,19,20],
[28,29,30,31,32,33,34]])
3.ブールインデックス
配列型インデックスと比較して、ブール型インデックスはスライスとして異なる処理方式を有する.
ブールインデックスは、インデックス配列の初期次元と同じ形状を持つ必要があります.最もストレートな場合、ブール型インデックスは、インデックスされた配列と同じ形状を有する.
>>> b=y>20
>>> b
array([[False,False,False,False,False,False,False],
[False,False,False,False,False,False,False],
[False,False,False,False,False,False,False],
[ True, True, True, True, True, True, True],
[ True, True, True, True, True, True, True]])
>>> y[b] #
array([21,22,23,24,25,26,27,28,29,30,31,32,33,34]) # , 。 , , 。
>>> # y b , 。 :
>>> b[:,5]
array([False,False,False,True,True])
>>> y[b[:,5]]
array([[21,22,23,24,25,26,27],
[28,29,30,31,32,33,34]])
>>> x=np.arange(30).reshape(2,3,5)
>>> b=np.array([[True,True,False],[False,True,True]])
>>> x[b]
array([[0,1,2,3,4],
[5,6,7,8,9],
[20,21,22,23,24],
[25,26,27,28,29]])
4次元配列のブールインデックスは次のとおりです.
>>> z=np.arange(120).reshape(2,3,4,5)
>>> b2=np.array([True,False])
>>> z[b2]
array([[[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]],
[[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34],
[35, 36, 37, 38, 39]],
[[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49],
[50, 51, 52, 53, 54],
[55, 56, 57, 58, 59]]]])
>>> b3=np.array([[True,False,True],[False,True,False]])
>>> z[b3]
array([[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]],
[[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49],
[50, 51, 52, 53, 54],
[55, 56, 57, 58, 59]],
[[80, 81, 82, 83, 84],
[85, 86, 87, 88, 89],
[90, 91, 92, 93, 94],
[95, 96, 97, 98, 99]]])
>>> b4=np.array([[[False,False,True,False],
[False,False,True,False],
[False,False,True,False]],
[[False,False,True,False],
[False,False,True,False],
[False,False,True,False]]])
>>> z[b4]
array([[ 10, 11, 12, 13, 14],
[ 30, 31, 32, 33, 34],
[ 50, 51, 52, 53, 54],
[ 70, 71, 72, 73, 74],
[ 90, 91, 92, 93, 94],
[110, 111, 112, 113, 114]])