假设我有一个M
x N
数组,
>>> M = 5
>>> N = 4
>>> a = np.ones((M, N))
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
我想得到每个数组的前x
个元素,但是x
是一个大小为M
的列表。
array([2, 3, 1, 4])
那么我的输出将是
[[1, 1],
[1, 1, 1],
[1],
[1, 1, 1, 1]]
我已经尝试过使用这种技术和其他类似的技术来实现这一点。这种方法不起作用,因为据我所知,索引输入不能是数组。
x = [2, 3, 1, 4]
a[:, :x]
我知道这可以通过使用for循环来实现,但我希望避免这样做,因为我正在处理大量的数据。
此外,输出很可能需要一个数组列表,而不是一个2D数组,因为Numpy似乎不赞成使用不同大小的数组。
1条答案
按热度按时间3pvhb19x1#
你可以通过生成器写你想要的东西,但是在is循环的末尾:
也许你可以稍微保存相比for循环(不确定甚至),但最好是看看什么是这样的东西的目的,如果你真的关心保持这样的列表或你只想要的值,以优化。