python - 从另一个数组更新 numpy 2d 数组索引
问题描述
有没有一种不使用循环的 numpy 方法来执行以下操作?
A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
I = np.array([0, 1, 0, 1, 1])
V = np.array([6, 6, 6, 6, 6])
我想更新 A,使其在 I 指定的相应索引中有 6。所以 A 变为 ...
A = np.array([[6,1],[2,6],[6,3],[4,6],[5,6]])
尝试了以下,但他们没有工作..
A[I] = V
A[:,I] = V
解决方案
尝试A[np.arange(len(A)), I] = V
::
In [15]: import numpy as np
In [16]: A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
In [17]: I = np.array([0, 1, 0, 1, 1])
In [18]: V = np.array([6, 6, 6, 6, 6])
In [19]: A[np.arange(len(A)), I] = V
In [20]: A
Out[20]:
array([[6, 1],
[2, 6],
[6, 3],
[4, 6],
[5, 6]])
推荐阅读
- debugging - VSCode:在远程调试时打开本地浏览器
- blender - 搅拌机在 XY 平面上移动顶点
- javascript - 点击后如何不刷新页面javascript - 作为参数传递时从实体更改类型
- javascript - ReactJs - 如何一次只保留一个“活动”部分
- excel - Excel 函数或 VBA 需要对具有相同部件号的行的值求和
- python - 我正在尝试运行一个我从 GitHub 克隆的程序,并按照他们告诉的每一个步骤进行操作,但是我在 CMD 中运行它时遇到了这个问题
- python - OpenCV(4.5.4-dev) 错误: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
- apache-spark - 使用 tensorflow 时,PySpark Python 工作者在 `.collect()` 处崩溃
- vue.js - vuetify :v-date-picker 更改日历类型时出错