numpy多维索引:使用np数组并列出不同的结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy多维索引:使用np数组并列出不同的结果相关的知识,希望对你有一定的参考价值。
为什么b1 b2给出不同的结果,但是b0,b1,b3给出相同的结果。并得到一个“ FutureWarning:不建议使用非元组序列进行多维索引;使用arr[tuple(seq)]
代替arr[seq]
。将来,它将被解释为数组索引arr[np.array(seq)]
,这将导致错误或错误。结果不同。“
a = np.array([[6, 7], [8, 9]])
print(a.shape)
print(a)
print()
b0 = a[[0, 0]]
print('b0')
print(b0.shape)
print(b0)
print()
b1 = a[[[0, 0]]]
print('b1')
print(b1.shape)
print(b1)
print()
b2 = a[np.array([[0, 0]])]
print('b2')
print(b2.shape)
print(b2)
print()
b3= a[np.array([0, 0])]
print('b3')
print(b3.shape)
print(b3)
(2,2)[[6 7][8 9]]
b0(2,2)[[6 7][6 7]]
b1(2,2)[[6 7][6 7]]
b2(1,2,2)[[[6 7][6 7]]]
b3(2,2)[[6 7][6 7]]
根据历史]
b1 = a[[[0, 0]]]
被/评估为
b1 = a[([0, 0],)] b1 = a[[0, 0]]
警告告诉我们此异常已得到纠正。
类似于a[i,j]
的索引实际上是a[(i,j)]
,将元组传递给getitem
方法。由于过去各种软件包的合并,在某些情况下,列表的解释方式相同。您找到了一个。
未来的警告是告诉我们,进行高级索引的最干净,最清晰的方法是使用元组和数组。使用列表时存在模棱两可的地方。
在1.15.0版本说明弃用中对此进行了描述,
不推荐使用除元组以外的任何内容的多维索引。这意味着ind = [slice(None),0]中的索引列表; arr [ind]应该更改为一个元组,例如,ind = [slice(None),0]; arr [tuple(ind)]或arr [(slice(None),́0)]。为了避免诸如arr [[[[0,1],[0,1]]]之类的表达式含糊不清,必须将其更改为arr [array([0,Â1]),array([0,1])] ,将来会被解释为arr [array([[0,1],[[0,1]])]]。
以上是关于numpy多维索引:使用np数组并列出不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
np newaxis 为 numpy ndarray(多维数组)增加一个轴