gpt4 book ai didi

python - 错误或本应是 : numpy raises "ValueError: too many boolean indices" for repeated boolean indices

转载 作者:太空狗 更新时间:2023-10-29 21:40:21 29 4
gpt4 key购买 nike

我在实验宇宙学中做一些模拟,在使用 numpy 数组时遇到了这个问题。我是 numpy 的新手,所以我不确定我是否做错了或者这是一个错误。我跑:

Enthought Python Distribution -- www.enthought.com
Version: 7.3-1 (32-bit)

Python 2.7.3 |EPD 7.3-1 (32-bit)| (default, Apr 12 2012, 11:28:34)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "credits", "demo" or "enthought" for more information.
>>> import numpy as np
>>> t = np.arange(10)
>>> t[t < 8][t < 5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many boolean indices
>>>

我预计它会返回:

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

因为 t[t < 8] 应该被当作另一个 ndarray?

numpy 文档(http://docs.scipy.org/doc/numpy/user/basics.indexing.html)将 bool 数组作为索引:

As with index arrays, what is returned is a copy of the data, not a view as one gets with slices.

正在运行 type(t[t < 8])还给出了 ndarray ,我想它应该具有 numpy 数组的所有属性。我应该用列表表达式做得更好吗?我还没有进行定时比较,但我认为这对于大型二维阵列来说是个问题。

最佳答案

t[ t < 8 ]确实确实为您提供了一个数组,但是,它并没有为您提供与开始时大小相同的数组。 t < 8将给出一个形状与 t 相同的 bool 数组.当您使用它来索引 t 时, 你只取出 bool 数组为 True 的元素给你留下一个更短的数组。当你再次这样做时:

result = t[t<8]
result[t<5]

那么 bool 索引数组的形状与t相同再次,但您使用它来索引一个较小的数组,这是导致错误的原因。

文档完全正确。您的新阵列不是 view到原来的......它是数据的副本,但这并不意味着新数组的形状或大小与原始数组相同。

关于python - 错误或本应是 : numpy raises "ValueError: too many boolean indices" for repeated boolean indices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16071310/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com