numpy:多元索引?

rn

我徘徊,是否可以一次索引多个尺寸?随着一些广播。范例:

假设我有一个数组A,形状为(n,d)假设我有一个索引数组,比如说I介于0之间的整数值d-1设置B = A[:,I]

如果shape(I) == (k,),无论如何k,则B具有形状(n,k)B[x,y] = A[x,I[y]]

但是,如果shape(I) == (k,p)不管什么(k,p),后来想B被塑造(n,k,p)B[x,y,z] = A[x,I[y,z]]

1°如何获得这种行为?

2°是否有我没有看到的缺点?

硬化的

您可以完全按照您的描述进行操作:

import numpy as np
n = 100
d = 20
k = 10
p = 17

A = np.random.random((n, d))
I = np.random.randint(low=0, high=d, size=(k, p))
B = A[:, I]
print(B.shape)  # (n, k, p)

# Testing if the new array B is constructed as expected
x = 3
y = 5
z = 7
print(B[x, y, z])
print(A[x, I[y, z]])
print(B[x, y, z] == A[x, I[y, z]])

没有上下文,很难回答这是否是一个好的实现。但是总的来说,如果您考虑速度,最好使用numpy和矢量化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章