pla*_*lan 7 python numpy multidimensional-array
我在实验宇宙学中做了一些模拟,并在使用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)将布尔数组描述为索引:
与索引数组一样,返回的是数据的副本,而不是切片所获得的视图.
运行type(t[t < 8])也给ndarray,我想应该有一个numpy数组的所有属性.我是否应该使用列表表达式做得更好?我还没有做过定时比较,但我认为这对于大型2D阵列来说是一个问题.
t[ t < 8 ]确实给你一个数组,但是,它没有给你一个与你开始时相同大小的数组.  t < 8将给出一个具有相同形状的布尔数组t.当您使用它进行索引时t,只拉出布尔数组为True您留下较短数组的元素.当你再次这样做时:
result = t[t<8]
result[t<5]
然后布尔索引数组的形状与t再次相同,但是您使用它来索引一个较小的数组,这是导致错误的原因.
文档完全正确.您的新数组不是view原始数据...它是数据的副本,但这并不意味着新数组的形状或大小与原始数组相同.