【发布时间】:2018-06-23 12:39:24
【问题描述】:
我有 np.arrays C、R 和 S 形状分别为 (?, d)、(?, n) 和 (?, d);其中 d
for i in range(?):
R[i][S[i]]=C[i]
即:我希望对于索引的每个元组 i(在 ? 指定的范围内)取 R 中的相应数组 R[i] 并分配 d 个位置(由 S[i] 指定的位置)为数组 C[i] 中的值。
pythonic 的方法是什么?
例子:
设置
import numpy as np
m,n,d= 2,7,4
R=np.zeros((m,n))
C=np.arange(d*m).reshape((m,d))
S=np.array([[0,2,4,6],[3,4,5,6]])
这行得通:
for i in range(m):
R[i][S[i]]=C[i]
这不起作用:
R[S]=C
【问题讨论】:
-
如果您在问题描述中添加了示例输入和输出,您可能会收到更多回复。
-
不确定但
idx = np.ogrid[tuple(map(slice, R.shape))]idx[-1] = SR[idx] = C做你想做的事吗? -
请阅读this section。
-
最近使用来自
argsort的索引数组在 3d 数组的最后一维上的示例:stackoverflow.com/questions/48072007/… -
@PaulPanzer,您的代码似乎确实可以满足我的要求,但我不明白它是如何工作的?你介意稍微详细说明一下吗?谢谢
标签: python arrays numpy array-broadcasting