【发布时间】:2019-10-02 00:50:59
【问题描述】:
我正在编写一个递归函数来查找索引对。 在我的示例中,向量 i 和 j 是矩阵的非零元素的 i 和 j 索引。
现在我想找到“唯一”的索引对,这样我就可以对其对角线形式的矩阵进行排序。或者至少消除零元素
我用 numpy 写了一个函数。
import numpy as np
i = np.array([0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8])
j = np.array([0, 3, 4, 0, 2, 4, 1, 5, 2, 6, 8, 3, 8, 4, 5, 7, 4, 6, 7, 8])
numbers = np.array([-1.])
def iterate(i, j, iter, numbers):
ii, = np.where(i == iter)
jj, = np.where(j[ii] != numbers)
try:
for jjj in jj:
numbers = np.append(numbers, [jjj])
if iter < np.amax(i)+1:
iterate(i, j, iter+1, numbers)
else:
return numbers
except:
print("exception")
如果我的迭代变量超过 i 中最大值的长度,我会期望返回。 问题是 numpy 为多重比较操作抛出错误:
jj, = np.where(j[ii] != numbers)
【问题讨论】:
-
错误是什么?
jj,=...仅在where测试一维数组时有效。拆包逗号是不可原谅的。 -
python __main__:11: DeprecationWarning: elementwise != comparison failed; this will raise an error in the future. -
什么是
numbers和j[ii]?
标签: python numpy recursion indexing