python - 简化 numpy argmin 的愚蠢循环
问题描述
如何简化我在这里以 numpy 风格编写的循环?
X = np.random.random([10,15,20])
Y = np.random.random([10,15,20,5])
Z = np.zeros([10,15,5])
min_X = np.argmin(X,axis=2)
for i in range(10):
for j in range(15):
Z[i,j,:] = Y[i,j,min_X[i,j],:]
解决方案
有 NumPy 内置 -np.take_along_axis
为此(需要一些额外的步骤,因为它需要索引数组具有相同数量的暗淡) -
np.take_along_axis(Y,min_X[...,None,None],axis=2)[...,0,:]
推荐阅读
- php - PHP不会打印出查询结果
- javascript - 在从数据库中获取并显示在页面上的图像上执行模型弹出
- java - 绕过firebase中的push id节点
- mysql - 我需要通过 ssh 连接 mysql
- php - Codeigniter 面包屑相同的提货页面设计
- tsql - SQL Server 字符串连接与 Varchar(max)
- maven - bazel 创建的空 maven jar
- symfony - 为什么我可以自动装配 EntityManagerInterface 但不能自动装配 UserInterface
- ios - 拖放并验证它
- angular - ReferenceError: 在使用 |this| 之前必须调用超级构造函数 在 Ti 类构造函数中