【发布时间】:2020-07-12 23:33:01
【问题描述】:
我遇到了 Numpy 的一个问题,我尝试使用(B 的)每一行的值作为另一个多维数组(A)的索引:
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> B
array([[ 0, 1, 2, 3],
[ 1, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.clip(B, 0, 2)
array([[0, 1, 2, 2],
[1, 2, 2, 2],
[2, 2, 2, 2]])
这是预期的结果:
array([[0, 1, 2, 2],
[4, 5, 5, 5],
[8, 8, 8, 8]])
有什么想法吗?非常感谢您的帮助。
【问题讨论】:
-
np.clip只是剪辑(即夹住)数组中每个元素的值,所以在你的情况下,它会将值剪辑到 0 到 2 之间。你为什么期望 np.剪辑(...)? -
嗨 XPhyro。因为“A”中的行长是 3,所以索引需要在 0 和 2 之间。所以我认为 np.clip 是回答我问题的第一步。
-
你在这里所做的只是剪裁
B元素的值,使它们在[0, 2]的封闭范围内;因此,np.clip不可能返回一个包含超出此范围的元素的数组,这是您期望它执行的操作(查看预期结果的最后两行中的值 4、5 和 8)。我怀疑np.clip不是你想要的。您能否详细说明您在这里尝试做什么,也许是步骤?仅从问题本身,我无法理解太多。 -
我的问题可能确实模棱两可,我很抱歉......让我们考虑 np.clip 的结果已经是'B'。我想用它们在A中的对应关系替换每一行中的值。例如,最后一行用'2'填充,所以我们将它们替换为'8',即A最后一行的索引2处的值。
标签: python python-3.x numpy multidimensional-array indexing