2024-06-26 02:16:47 发布
网友
我正在处理(x,y,z)维的矩阵,并希望同时从这个矩阵中索引许多值
ie. if the index A[0,0,0] = 5 and A[1,1,1] = 10 A[[1,1,1], [5,5,5]] = [5, 10]
然而,像这样的索引似乎返回了矩阵的大块
有人知道我怎么做吗?我有一个大的索引数组(n,x,y,z),我需要用它来索引a)
谢谢
您尝试使用1作为第一个索引3次,5作为第二个维度的索引(同样是3次)。这将使元素在A[1,5,:]处重复三次
1
5
A[1,5,:]
A = np.random.rand(6,6,6); B = A[[1,1,1], [5,5,5]] # [[ 0.17135991, 0.80554887, 0.38614418, 0.55439258, 0.66504806, 0.33300839], # [ 0.17135991, 0.80554887, 0.38614418, 0.55439258, 0.66504806, 0.33300839], # [ 0.17135991, 0.80554887, 0.38614418, 0.55439258, 0.66504806, 0.33300839]] B.shape # (3, 6)
相反,您需要为矩阵的每个轴指定[1,5]
[1,5]
A[[1,5], [1,5], [1,5]] = [5, 10]
高级索引的工作原理如下:
A[I, J, K][n] == A[I[n], J[n], K[n]]
使用A、I、J和K所有数组。这不是完整的,一般的规则,但它的规则简化为什么你需要
A
I
J
K
例如,如果您想要output[0] == A[0, 0, 0]和output[1] == A[1, 1, 1],那么您的I、J和K数组应该看起来像np.array([0, 1])。列表也起作用:
output[0] == A[0, 0, 0]
output[1] == A[1, 1, 1]
np.array([0, 1])
A[[0, 1], [0, 1], [0, 1]]
您尝试使用
1
作为第一个索引3次,5
作为第二个维度的索引(同样是3次)。这将使元素在A[1,5,:]
处重复三次相反,您需要为矩阵的每个轴指定
[1,5]
高级索引的工作原理如下:
使用
A
、I
、J
和K
所有数组。这不是完整的,一般的规则,但它的规则简化为什么你需要例如,如果您想要
output[0] == A[0, 0, 0]
和output[1] == A[1, 1, 1]
,那么您的I
、J
和K
数组应该看起来像np.array([0, 1])
。列表也起作用:相关问题 更多 >
编程相关推荐