3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
您還可以編寫:
>>> X[np.ix_(idx,idx)]
array([[ 1, 4],
[13, 16]])

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
In [1]: X = np.arange(1, 17).reshape(4, 4)
In [2]: idx = np.array([True, False, False, True]) # note that here idx has to
# be an array (not a list)
# or boolean values will be
# interpreted as integers
In [3]: X[idx][:,idx]
Out[3]:
array([[ 1, 4],
[13, 16]])

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
在numpy此稱為fancy indexing。要獲得您想要的項(xiàng)目,您應(yīng)該使用2D索引數(shù)組。
您可以使用outer來從1D中idx創(chuàng)建適當(dāng)2D的索引數(shù)組。當(dāng)應(yīng)用于兩個(gè)序列時(shí),外部函數(shù)1D會(huì)將一個(gè)序列的每個(gè)元素與另一個(gè)序列的每個(gè)元素進(jìn)行比較。回顧True*True=True和False*True=False,與np.multiply.outer()相同np.outer(),可以為您提供2D索引:
idx_2D = np.outer(idx,idx)
#array([[ True, False, False, True],
# [False, False, False, False],
# [False, False, False, False],
# [ True, False, False, True]], dtype=bool)
您可以使用:
x[ idx_2D ]
array([ 1, 4, 13, 16])
在您的真實(shí)代碼中,您可以使用x=[np.outer(idx,idx)]它,但是它不節(jié)省內(nèi)存,其工作方式與del idx_2D完成切片后添加a的工作方式相同。
添加回答
舉報(bào)