这适用于 MATLAB:
>> p = [1, 0, 2, 4, 3, 6, 5];
>> p(p+1)
ans =
0 1 2 3 4 5 6
有没有办法在 NumPy 中做同样的事情?我不知道如何:
>>> p = mat([1, 0, 2, 4, 3, 6, 5])
>>> p[p]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\numpy\matrixlib\defmatrix.py", line 305, in __getitem__
out = N.ndarray.__getitem__(self, index)
IndexError: index (1) out of range (0<=index<0) in dimension 0
>>> p[:,p]
此时解释器似乎进入了无限循环。这也会导致无限循环:
>>> [p[:,i] for i in p]
但这有效:
>>> [p[:,i] for in range(0,6)]
因此,使用矩阵成员作为它自己的索引会导致问题。这是 Python 中的错误吗?还是我做错了什么?