numpy.triu 不起作用,tri() 缺少 1 个必需的位置参数

时间:2021-07-15 02:05:51

标签: numpy matrix sparse-matrix triangular

代码是:

adjj = np.triu(self.adj,k=1)

然后Pycharm停止并报告:

<块引用>

文件“D:/mapgeneralization/rastertest/dbscan.py”,第 436 行,在 初始化 adjj = np.triu(self.adj,k=1) 文件“C:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\twodim_base.py”, 第 465 行,三人组 mask = tri(*m.shape[-2:], k=k-1, dtype=bool) 类型错误:tri() 缺少 1 个必需的位置参数:'N'

1 个答案:

答案 0 :(得分:0)

什么是self.adj?如果我使用标量参数,我会收到此错误消息:

In [420]: np.triu(3, k=1)
Traceback (most recent call last):
  File "<ipython-input-420-860353c7169f>", line 1, in <module>
    np.triu(3, k=1)
  File "<__array_function__ internals>", line 5, in triu
  File "/usr/local/lib/python3.8/dist-packages/numpy/lib/twodim_base.py", line 499, in triu
    mask = tri(*m.shape[-2:], k=k-1, dtype=bool)
TypeError: tri() missing 1 required positional argument: 'N'

但没有错误是我给它一个二维数组:

In [421]: np.triu(np.ones((3,4)), k=1)
Out[421]: 
array([[0., 1., 1., 1.],
       [0., 0., 1., 1.],
       [0., 0., 0., 1.]])

与许多 numpy 函数一样,triu

开头
m = asanyarray(m)

如果 m 类似于 scipy 稀疏矩阵,则结果是一个 0d 对象 dtype 数组。 Argumentwise 这将与我的标量示例相同。