假設我有一個長度爲5的矩陣A
,長度爲5的矢量b
其元素指示矩陣A
的對應行中需要多少個值。這意味着b
中的每個值都以A
的第二維的大小爲上界。我的問題是如何給定一個矩陣的一個片段給定一個向量,這是一個複雜的版本,通過編寫一個向量的整數值元素vector[:n]
從Numpy中的向量創建一個矩陣切片
例如,這可以通過循環遍歷A行:
import numpy
A=numpy.arange(20).reshape((5,4))
b=numpy.array([0, 3, 3, 2, 3])
output=A[0, :b[0]]
for i in xrange(1, A.shape[0]):
output=numpy.concatenate((output, A[i, :b[i]]), axis=0)
# output is array([ 4, 5, 6, 8, 9, 10, 12, 13, 16, 17, 18])
當處理一個非常大的數組時,該循環的計算效率可能相當低。此外,我的目的是在沒有scan
操作的情況下最終應用於Theano。我想避免使用循環來給出一個矢量的切片。
非常感謝您! – Tqri