【发布时间】:2024-05-22 01:15:02
【问题描述】:
我正在尝试将列表列表中的平面列表添加到固定长度的 numpy 数组中。
import numpy as np
def extract_foo(x):
return x.size
def extract_foo_of_foo(x):
return [x.size for _ in range(18)]
def extract_feats():
input_array = np.ones((36,))
output_matrix = np.empty((36, 22))
for x_idx, x_val in enumerate(input_array):
output_matrix[x_idx] = [
extract_foo(x_val),
extract_foo(x_val),
extract_foo(x_val),
extract_foo(x_val),
# this is where I want to flatten my list
# that one is a list of list containing 22 - 4 = 18 lists
extract_foo_of_foo(x_val)
]
return output_matrix
我尝试了如下列表理解:
[y for y in extract_foo_of_foo(x_val)]
还有减少功能:
reduce(lambda y: y, extract_foo_of_foo(x_val))
我正在使用 numpy 1.17.4 和 python 3.7.5。有没有pythonic的方法来处理这个?
【问题讨论】:
-
[z for z in y for y in extract_foo_of_foo(x_val)]呢? -
@accdias 你的意思是
[z for y in extract_foo_of_foo(np.array([1, 2, 3])) for z in y]? -
@Patol75,是的......我搞砸了订单。对不起。
-
您好,两种解决方案都不起作用。我得到同样的错误:ValueError: cannot copy sequence with size 5 to array axis with dimension 22
-
右边是
[z for y in extract_foo_of_foo(x_val) for z in y]。
标签: python python-3.x numpy python-3.7