假设我有一个长度为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