簡體   English   中英

訪問np.array的部分

[英]accessing portions of np.array

我想快速訪問np.array元素,例如從0-6加10到最后的索引。 到目前為止,我已經嘗試過:

a[0:6,10:]

要么

np.concatenate(a[0:6],a[10:])

兩者都給我錯誤,第二個給我錯誤:“ TypeError:只有整數標量數組可以轉換為標量索引”

編輯:串聯仍然給我問題,所以我要在這里發布我的完整代碼:

Fold_5 = len(predictorX)/5
trainX = np.concatenate(predictorX[:3*int(Fold_5)],predictorX[4*int(Fold_5)])

預測變量X是一個數組,其值類似於

[[0.1,0.4,0.6,0.2],[..]....]

這是獲取所需子數組的另外兩種簡短方法:

np.delete(a, np.s_[6:10])

np.r_[a[:6], a[10:]]

在:

a[0:6,10:]

0:6選擇行,10:選擇列。 如果a不為2d或足夠大,則將導致錯誤。

np.concatenate(a[0:6],a[10:])

問題是參數的數量; 它需要一個數組列表。 如果給出第二個,則將其理解為axis ,它應該是整數(因此會出錯)。

np.concatenate([a[0:6],a[10:]])

應該管用。

另一種選擇是使用列表編制索引

a[0,1,2,3,4,5,10,11,...]]

np.r_是構造此類列表的便捷小工具:

In [73]: np.r_[0:6, 10:15]
Out[73]: array([ 0,  1,  2,  3,  4,  5, 10, 11, 12, 13, 14])

它實際上執行np.concatenate([np.arange(0,6),np.arange(10,15)])

無論先索引然后連接,還是先索引然后索引都沒有關系。 效率差不多。 np.delete取決於“ delete”區域的大小和類型,在幾種方法中進行選擇。

trainX表達式中, trainX []添加到串聯調用中。 但是, predictorX[4*Fold_5]可能是個問題。 是否缺少: (在10:為例)? 如果只需要一個值,則需要將其轉換為1d,例如: predictorX[[4*Fold_5]]

Fold_5 = len(predictorX)//5   # integer division in py3
trainX = np.concatenate([predictorX[:3*Fold_5], predictorX[4*Fold_5:]])

np.concatenate需要一個數組序列。 嘗試

np.concatenate([a[0:6],a[10:]])

要么

np.concatenate((a[0:6],a[10:]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM