我在实验宇宙学中做一些模拟,在使用 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)说布尔数组作为索引:
与索引数组一样,返回的是数据的副本,而不是切片时的视图。
runningtype(t[t < 8])
也给出了ndarray
,我猜它应该具有 numpy 数组的所有属性。我应该用列表表达式做得更好吗?我还没有进行定时比较,但我想这对于大型二维数组来说是个问题。