python - 如果维度可以变化,我如何访问数组元素?
问题描述
例如,我将数据存储在数组中
myList = array([('A', 3, 2, 5),('B', 3, 7, 0),dtype=[('f0', '<U128'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8')])
它具有恒定数量的 >2 列和任意数量的行。我想将第二列读入一个新数组。我知道我可以做到这一点
[x[1] for x in myList]
或者
list(zip(*myList))[1]
但我的问题是,在某些情况下,数组只有一行,那么我只想要值myList[1]
和上面的代码。我可以为此使用 if 条件,但我想知道是否有更有效的方法来处理数组,当维度可以变化时?
解决方案
提供myList
的是一个实际的numpy
数组,
def func(arr):
if len(arr.shape) == 1:
return arr[1]
else:
return arr[:, 1]
result = func(myList)
IfmyList
是一个类型list
:
def func(lst):
if isinstance(lst[0], list):
return [x[1] for x in lst]
else:
return lst[1]
推荐阅读
- python - numpy/scipy 的 Python 多处理速度慢
- .net - 如何在 uhttpsharp 请求处理程序中关闭客户端连接?
- python - 如何使用节点客户端库以不同的名称上传本地文件?
- java - Spring Boot 中是否有一个很好的 zalando-problem 实现示例?
- c++ - 用于快速查找的最佳 STL 容器
- php - 修复针对 API 错误的 Guzzle 400 Bad 请求
- node.js - 为什么我使用 nginx 反向代理从 api post 请求到 node express 应用程序得到 404
- javascript - Visual Studio Code 正在自动格式化我的带有标记的 js 文件
- python - 有没有一种特定的方法可以在 pod 上安装 python 包?
- react-native - 如何使用 AsyncStorage 将数据保存为对象