代码是:
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'
答案 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 这将与我的标量示例相同。