首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用坐标列表从2dnumpy数组中最佳选择值?

如何使用坐标列表从2dnumpy数组中最佳选择值?
EN

Stack Overflow用户
提问于 2020-09-03 07:40:03
回答 3查看 32关注 0票数 0

我正在尝试理解使用坐标列表(不使用循环)从2d NumPy数组中拉取值的最佳方法。

例如:

代码语言:javascript
运行
复制
import numpy as np

arr = np.array([
    ['AA','AB','AC'],
    ['BA','BB','BC'],
    ['CA','CB','CC']
])

coordinates = [(0,0), (1,1)]

在进行了一些实验之后:

代码语言:javascript
运行
复制
# This works but does not return what I expected
# I expected ['AA','BB'], but returned ['AB,'AB']
arr[(0,0), (1,1)]

# This does not work
arr[*coordinates]

有什么想法?

EN

回答 3

Stack Overflow用户

发布于 2020-09-03 07:52:42

我的意思是你总能做到

代码语言:javascript
运行
复制
[arr[coordinates[0]],arr[coordinates[1]]]

得到你想要的结果。这将评估为'AA','BB‘。

可以对任意大小的坐标列表进行比特泛化:

代码语言:javascript
运行
复制
result = [arr[coordinate] for coordinate in coordinates ]

这就是你想要的吗?

票数 0
EN

Stack Overflow用户

发布于 2020-09-03 07:58:04

使用列表理解的

代码语言:javascript
运行
复制
result = [arr[c] for c in coordinates]

代码示例:

代码语言:javascript
运行
复制
import numpy as np

arr = np.array([["AA", "AB", "AC"], ["BA", "BB", "BC"], ["CA", "CB", "CC"]])

coordinates = [(0, 0), (1, 1)]
result = [arr[c] for c in coordinates]
print(result)

输出:

代码语言:javascript
运行
复制
['AA', 'BB']
票数 0
EN

Stack Overflow用户

发布于 2020-09-03 08:55:33

您需要使用双重索引。第一个数组被分配给x坐标,另一个数组分配给y坐标,如下所示:

代码语言:javascript
运行
复制
x, y = np.transpose(np.array(coordinates))
arr[x, y]

在使用numpy时尽量避免列表解释:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63714845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档