【发布时间】:2021-11-07 08:24:26
【问题描述】:
问题:我试图用一些值取决于索引(i, j) 的值以某种非平凡的方式填充二维数组arr。更准确地说,i 和 j 一起提供了一个新索引 k(i、j 和 k 都具有相同的范围),然后我用它来查找其他数组中的值(即H[i,j] = values[k])。
我最初的想法是np.put_along_axis 可以用于此。我生成了两个列表indices 和values,这样
nrows, ncols = arr.shape
for i in range(nrows):
arr[i, indices[i]] = values[i]
原则上这很好用,但是当我尝试时
np.put_along_axis(arr, indices, values, axis=1)
我收到以下错误
AttributeError: 'list' object has no attribute 'dtype'
但是,我无法将这些列表放入数组中,因为它们很杂乱;有些行需要插入的值比其他行少。我想知道有没有办法使用np.put_along_axis?
【问题讨论】:
-
put_along 本质上是
x[np.arange(...), indices],每行的索引中都有一个值。所以indices应该是 1d 或 2d 与匹配的行数。 -
您能提供一个minimal reproducible example吗?这将有助于了解您要做什么。
标签: python arrays numpy indexing