问题描述
代码是:
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'
解决方法
什么是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.],[0.,0.,1.]])
与许多 numpy
函数一样,triu
以
m = asanyarray(m)
如果 m
类似于 scipy 稀疏矩阵,则结果是一个 0d 对象 dtype 数组。 Argumentwise 这将与我的标量示例相同。