我徘徊,是否可以一次索引多个尺寸?随着一些广播。范例:
假设我有一个数组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] 删除。
我来说两句