python - 多维数组无需询问即可自行转置

标签 python numpy

当我尝试以稍微不同的方式访问多维数组时,我得到了我不理解的不同结果。

当我运行时:

ells=np.array([1,2,3,4])

check=np.zeros((2,2,2,len(ells)))
print(check[:,:,:,ells<=4].shape)
print(check[0,:,:,ells<=4].shape)

我实际上可以通过使用来解决这个问题

ells=np.array([1,2,3,4])

check=np.zeros((2,2,2,len(ells)))
print(check[:,:,:,ells<=4].shape)
print(check[0,:,:,:][:,:,ells<=4].shape)

但是我想了解为什么第一个版本是错误的。

在第一种情况下,我期望获得形状为 (2,2,2,4) 和 (2,2,4) 的数组,但我得到 (2,2,2,4) 和 (4,2,2 )。

在第二种情况下,我得到了预期的答案,(2,2,2,4) 和 (2,2,4)。

最佳答案

这是混合高级和基本索引的示例:

https://docs.scipy.org/doc/numpy-1.16.1/reference/arrays.indexing.html#combining-advanced-and-basic-indexing

两个外部索引选择大小4,然后添加两个内部切片:

check[0,:,:,ells<=4]

给出的原因是,当高级索引由切片分隔时,存在潜在的歧义。但当其中一个索引是标量时,这种歧义的情况就较弱(这是一个古老的反对意见)。

我确信有人可以找到重复的 SO。

关于python - 多维数组无需询问即可自行转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55522478/

相关文章:

python - 如何使用 `setrlimit` 来限制内存使用? RLIMIT_AS 杀得太快; RLIMIT_DATA, RLIMIT_RSS, RLIMIT_STACK 根本不杀死

python - 如何使用scikit线性回归模型同时求解多个独立的时间序列

python - 如何使用 numpy.where?

python - 使用pyqt获取键盘事件

Python;使用 NGram 情感分析 - 无法获取前 5 个单词

python - 在内置函数和影子名称的变量名前/后添加 "_"

python - 在 python 中将 dbf 转换为 csv 的方法?

python - 语法错误: invalid syntax while using find_element_by_xpath using Selenium in Python

python - 如何使用指针在 Numba 中包装 CFFI 函数

python - 将记录添加到 numpy 记录数组