首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy: 2D numpy数组中的交换值

Numpy: 2D numpy数组中的交换值
EN

Stack Overflow用户
提问于 2022-02-24 14:42:09
回答 1查看 36关注 0票数 -1

我有一个二维numpy数组:

代码语言:javascript
运行
复制
arr = np.array(([[6,1,2],
                 [3,4,5],
                 [0,7,8]]))

我使用了另一个一维numpy数组:

代码语言:javascript
运行
复制
value = np.asarray([9,8,7,6,5,4,3,2,1])

我想用一维数组的索引值更改2D数组的值​​。

例如:

在位置(0,0)的2D数组中,我的值为6。因此,我必须将值(0,0)修改为显示在一维数组的索引6上的值,因此是3。

到目前为止,我有这样的代码:

代码语言:javascript
运行
复制
value = np.asarray([9,8,7,6,5,4,3,2,1])
arr = np.array(([[6,1,2],[3,4,5],[0,7,8]]))

print(arr)
#[[6 1 2]
#[3 4 5]
#[0 7 8]]

for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
        arr[i,j] = value[arr[i,j]]

print(arr)

#[[3 8 7]
#[6 5 4]
#[9 2 1]]

问题是,这段代码在大型表上需要时间。(4096平方公里的阵列,10秒)

有没有解决这个问题的有效办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-24 14:46:52

这很简单,您只需要一个命令。Numpy自动处理矢量化。

代码语言:javascript
运行
复制
arr = value[arr]

下面是您提供的数据的一个示例:

代码语言:javascript
运行
复制
>>> value[arr]
array([[3, 8, 7],
       [6, 5, 4],
       [9, 2, 1]])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71253688

复制
相关文章

相似问题

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