[英]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.