【发布时间】:2015-04-22 02:52:30
【问题描述】:
我正在尝试在生成器的帮助下生成一个 2d numpy 数组:
x = [[f(a) for a in g(b)] for b in c]
如果我尝试做这样的事情:
x = np.array([np.array([f(a) for a in g(b)]) for b in c])
正如预期的那样,我得到了一个 np.array 的 np.array。但我想要的不是这个,而是 ndarray,所以我可以通过以下方式获取例如列:
y = x[:, 1]
所以,我很好奇是否有办法以这种方式生成它。
当然,可以创建所需大小的 npdarray 并用所需值填充它,但我想要一种方法来在一行代码中做到这一点。
【问题讨论】:
-
而且它必须是生成器表达式?不能是
np.shape或类似的吗? -
f(a)和g(b)到底是做什么的?如果它们产生数字,您的代码应该可以工作:这是初始化 2d numpy 数组的正确方法(numpy 通常足够聪明,可以将数组的数组转换为 ndarray) -
data['Name']是什么样的?最好给我们提供可以即插即用的示例。np._names的形状是什么?我在您的代码中没有看到任何生成器,只是列出了理解。