python - 将列表列表转换为 Numpy 数组而不结转列表
问题描述
我正在尝试将列表列表和列表中的其他数字转换为 numpy 数组。
到目前为止,我已经尝试过了,但列表仍然延续到数组:
ll = [['119', '222', '219', '293'], '4', ['179', '124', '500', '235'], '7']
arrays = np.array(ll)
输出是:
array([list(['119', '222', '219', '293']), '4', list(['179', '124', '500', '235']), '7'], dtype=object)
我想要的输出是这样的:
[(array([ 119, 222, 219, 293]), 4), (array([ 179, 124, 500, 235]), 7)]
有没有办法做到这一点。在过去的两天里,我一直在努力解决这个问题。
解决方案
由于您想将每两个元素分组为一个元组,然后将每个元组的第一个元素转换为一个 numpy 数组,您可以使用列表推导zip
:
[(np.array(i, dtype=int), int(j)) for i, j in zip(ll[::2], ll[1::2])]
# Result
[(array([119, 222, 219, 293]), 4), (array([179, 124, 500, 235]), 7)]
dtype
请注意,我在 numpy 数组构造函数中指定 a以将数组转换为整数。
如果您担心在此处制作列表的两个副本,您也可以简单地使用基于范围的索引:
[(np.array(ll[i], dtype=int), int(ll[i+1])) for i in range(0, len(ll), 2)]
推荐阅读
- android - 电影分析 Xamarin , Android, iOS
- python - 为什么 sleep 在我的代码之前运行?- Python
- mysql - 选择MySql表中值大于到零的所有行(十进制类型)
- llvm - llvm 错误 - 错误预期指令操作码
- ssl - 移动设备上的 Chromium(Chrome、Brave)停止信任我的本地 LetsEncrypt 证书
- mysql - 错误 1045 (28000): 拒绝用户 'root'@'localhost' 的访问
- android - 带有实时数据的 Kotlin Elvis 声明
- php - 如何基于 prod 配置的符号链接设置暂存环境,而不显示调试信息?
- sql - 如何在 SQL Server 中“复制”一行?
- java - JDBC SqlSyntaxErrorException 但语句在 SQL 工具中有效