我有一个数字数组"arr"和一个索引数组"ind":


import numpy as np

arr = np.random.randint(255, size=(100,64,64,16))

ind = np.random.randint(16, size=(100,2))

arr中,最后一个维度表示通道,而第一个维度表示采样数.在ind中,每行表示对应于arr中的每个样本的两个随机信道索引.我希望对于对应于indwithout using any loop中的通道索引的arr中的每个样本,使整个64 x 64通道的值等于0.如何才能做到这一点?

我曾try 使用:

arr[:,:,:,ind] = 0

我原以为索引会按样本广播,但结果整个数组变成了0.使用循环非常耗时且效率低下.我也想使用np.where,但我不确定使用什么条件来访问数组的索引.

推荐答案

我相信你可以用np.put_along_axis来做这个:

import numpy as np

arr = np.random.randint(255, size=(100,64,64,16))
ind = np.random.randint(16, size=(100,2))

np.put_along_axis(arr, ind[:, None, None, :], 0, axis=3)

Python-3.x相关问答推荐

Pandas 数据帧断言等同于NaN

将数据帧扩展为矩阵索引

使用递归将int转换为字符串

如何在当前测试中使用fixture 转换后的数据进行参数化?

Python webdrivermanager 和 Chrome 115.0 的 URL https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 错误没有此类驱动程序

python 分代垃圾收集:get_count 没有报告正确的对象创建数?

如何沿单列获取嵌套列表中的唯一值?

过滤查询集和Q运算符的不同值

Pandas 值列中列表中元素的计数

在 Python 3.5 中使用 aiohttp 获取多个 url

如何通过python打开文件

为 python3 安装 opencv

在没有时间的python中创建日期

类型提示返回 NameError: name 'datetime' not defined

如何使用 python 库连接到 poloniex.com websocket api

TypeError:多个基地有实例布局冲突

TypeError:无法实例化类型元组;使用 tuple() 代替

通过字典有效地替换Pandas 系列中的值

如何在 Python 3.4 中使用 pip 3?

在 PyCharm 中配置解释器:请使用不同的 SDK 名称