python - 将列表中的平面列表添加到固定长度的 numpy 数组中
问题描述
我正在尝试将列表中的平面列表添加到固定长度的 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方法来处理这个?
解决方案
如果我正确理解了您的问题,我相信您可以像这样在第二个轴上使用切片索引:
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, 0:4] = [
extract_foo(x_val),
extract_foo(x_val),
extract_foo(x_val),
extract_foo(x_val)
]
output_matrix[x_idx, 4:22] = extract_foo_of_foo(x_val)
return output_matrix
这是输出的形状:
>>> extract_feats().shape
(36, 22)
推荐阅读
- angular - 打字稿布尔比较给出错误的结果
- onedrive - OneDrive 客户端状态/健康检查
- javascript - javascript中的for循环VS For Each
- android - onBackPressed 与多个片段的行为
- r - 更改日期格式时保持日期类?
- python - 如何在数据框中使用索引访问多列以在 excel 工作表中查找完整行的字符串
- build - 构建 cmake 项目时通过终端获取产品版本
- node.js - 如何读取目录并知道文件类型?
- asp.net - 使用 Web 应用程序访问客户端证书智能卡
- ios - 自动使 UICollectionview 水平滚动