当我进行numpy索引时,有时索引可能是一个空列表,在这种情况下我希望numpy也返回一个空数组。例如:
然而,当我这样做时:
然后它再次完美地工作:
但是当我检查c和d的类型时,它们返回的是相同的类型!甚至形状等所有内容都一样:
a = np.array([1, 2, 3])
b = []
print a[b]
这个运行得非常好!当结果给我:
result:[]
但是当我使用ndarray作为索引器时,奇怪的事情发生了:
a = np.array([1, 2, 3])
b = []
c = np.array(b)
print a[c]
这让我出现了一个错误:
IndexError: arrays used as indices must be of integer (or boolean) type
然而,当我这样做时:
a = np.array([1, 2, 3])
b = []
d = np.arange(0, a.size)[b]
print a[d]
然后它再次完美地工作:
result:[]
但是当我检查c和d的类型时,它们返回的是相同的类型!甚至形状等所有内容都一样:
print type(c), c.shape
print type(d), d.shape
result:<type 'numpy.ndarray'> (0L,)
result:<type 'numpy.ndarray'> (0L,)
我在想这段代码有什么问题吗?为什么 a[c] 不起作用,但是 a[d] 却可以?你能帮我解释一下吗?谢谢!
np.zeros(n)
。那也是dtype float。 - hpaulj