![](/img/trans.png)
[英]Is there a way to find the sum of the last n and first n elements in a 2D array using only NumPy?
[英]First N elements of a 2D Numpy array where N is a list
假设我有一个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
的列表。 所以,如果x
是
array([2, 3, 1, 4])
那么我的 output 就是
[[1, 1],
[1, 1, 1],
[1],
[1, 1, 1, 1]]
我曾尝试使用这种技术和其他类似技术来做到这一点。 此方法不起作用,因为据我所知,索引输入不能是数组。
x = [2, 3, 1, 4]
a[:, :x]
我知道这可以使用 for 循环来完成,但我想避免这样做,因为我正在处理大量数据。
此外,output 很可能需要是 arrays 的列表而不是二维数组,因为 Numpy 似乎已弃用不同大小的数组 arrays。
您可以通过生成器编写您想要的内容,但在循环的最后:
import numpy as np
M = 5
N = 4
a = np.ones((M, N))
d = np.array([2, 3, 1, 4])
out = list(map(lambda a:a[0][:a[1]], zip(a, d)))
与 for 循环相比,也许你可以稍微节省一点(甚至不确定),但最好是看看这样的目的是什么,如果你真的关心保留这样的列表或者你只想要值,优化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.