[英]np.linalg.lstsq(X,Y)[0] - TypeError: No loop matching the specified signature and casting was found for ufunc lstsq_n
I want to get my X values in the shape [X 1]
.我想以
[X 1]
的形式获得我的 X 值。
For this I am using this code:为此,我正在使用以下代码:
X = np.array([[value,1] for value in X])
I get this warning...我收到这个警告...
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:2: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
... but it seemed to work. ......但它似乎工作。
But when I then tried to get m
and b
values using thgis code:但是当我尝试使用 thgis 代码获取
m
和b
值时:
m, b = np.linalg.lstsq(X,Y)[0]
I got this error:我收到了这个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-32-761e189a9409> in <module>()
----> 1 m, b = np.linalg.lstsq(X,Y)[0]
<__array_function__ internals> in lstsq(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/numpy/linalg/linalg.py in lstsq(a, b, rcond)
2304 # lapack can't handle n_rhs = 0 - so allocate the array one larger in that axis
2305 b = zeros(b.shape[:-2] + (m, n_rhs + 1), dtype=b.dtype)
-> 2306 x, resids, rank, s = gufunc(a, b, rcond, signature=signature, extobj=extobj)
2307 if m == 0:
2308 x[...] = 0
TypeError: No loop matching the specified signature and casting was found for ufunc lstsq_n
How can I amend my code?如何修改我的代码?
I found a solution.我找到了解决方案。 List comprehension should not be used:
不应使用列表推导:
X=np.vstack([df.X,np.ones(len(df.X))]).T
Y = df.Y
m,b = np.linalg.lstsq(X,Y)[0]
This works for me.这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.