python返回数组_python – 使用numpy.where()返回完整数组的索...

博客内容涉及使用numpy处理3D数组,特别是寻找特定索引位置值为1的元素。作者提到有一个3x3x3的numpy数组a和一个名为idx的索引列表,用于标识矩阵的中心交叉。目标是找到在idx指定位置上,数组a第一维值为1的索引。使用numpy.where()函数尝试解决此问题,但结果只返回了切片数组的索引,而非原始数组a的索引。作者希望得到的结果是对应于a中值为1的索引对。
摘要由CSDN通过智能技术生成

我有以下3 x 3 x 3 numpy数组称为a(在阅读完其余问题后,注释将有意义):

array([[[8, 1, 0], # irrelevant 1 (is at position 1 rather than 0)

[1, 7, 5], # the 1 on this line is what I am after!

[1, 4, 9]], # irrelevant 1 (out of the "cross")

[[4, 0, 1], # irrelevant 1 (is at position 2 rather than 0)

[1, 0, 1], # I'm only after the first 1 on this line!

[6, 2, 1]], # irrelevant 1 (is at position 2 rather than 0)

[[0, 2, 2],

[0, 6, 7],

[3, 4, 9]]])

此外,我有这个索引列表,指的是所述矩阵的“中心交叉”,称为idx

[array([0, 1, 1, 1, 2]), array([1, 0, 1, 2, 1])]

编辑:我称之为“交叉”,因为它标记了以下中央列和行:

>>> a[..., 0]

array([[8, 1, 1],

[4, 1, 6],

[0, 0, 3]])

我想要获得的是位于idx的所有那些数组的索引,其第一个值为1,但我正在努力理解如何以正确的方式使用numpy.where().以来…

>>> a[..., 0][idx]

array([1, 4, 1, 6, 0])

…我试过了…

>>> np.where(a[..., 0][idx] == 1)

(array([0, 2]),)

…但是你可以看到它返回切片数组的索引,而不是a,而我希望得到:

[array([0, 1]), array([1, 1])] #as a[0, 1, 0] and a [1, 1, 0] are equal to 1.

预先感谢您的帮助!

PS:在评论中,我建议尝试提供更广泛的适用性方案.虽然它不是我用的,但我想这可以用来处理像许多2D库那样的图像,包括源层,目标层和掩码(参见例如cairo).在这种情况下,掩码将是idx数组,可以想象使用RGB颜色的R通道(a […,0]).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值