【发布时间】:2020-02-02 16:49:29
【问题描述】:
我正在尝试选择名为matrix 形状为(25323, 9) 的numpy 矩阵中的所有行,其中列表@ 中每个元组的第一列的值在start 和end 的范围内987654325@。最终,我想创建一个新的 numpy 矩阵,其结果是final 的形状为(n, 9)。以下代码返回此错误:TypeError: only integer scalar arrays can be converted to a scalar index。我也尝试使用numpy.zeros((1,9)) 初始化final 并使用np.concatenate,但得到了类似的结果。当我使用final.append(result) 而不是使用np.concatenate 时,我确实得到了编译结果,但是矩阵的形状会丢失。我知道这个问题有适当的解决方案,任何帮助将不胜感激。
final = []
for i in range_tuples:
copy = np.copy(matrix)
start = i[0]
end = i[1]
result = copy[(matrix[:,0] < end) & (matrix[:,0] > start)]
final = np.concatenate(final, result)
final = np.matrix(final)
【问题讨论】:
-
concatenate获取数组列表和轴号。你试着给它两个数组。它反对将第二个数组用作数字。哦,不要像这样使用concatenate。初始化很慢而且很难。使用列表追加。 -
要明确一点,每个
result将是(n1, 9) 形状,n1可以在哪里不同?您希望结果是一个 (n,9),其中n是所有n1的总和?你试过vstack加入数组列表吗?
标签: python numpy vectorization