以下代码甚至不会在我的系统上完成:
import numpy as np
from scipy import sparse
p = 100
n = 50
X = np.random.randn(p,n)
L = sparse.eye(p,p, format='csc')
X.T.dot(L).dot(X)
Run Code Online (Sandbox Code Playgroud)
有没有解释为什么这个矩阵乘法挂起?
我想迭代一个n大小为1 的维立方体的所有顶点.我知道我可以这样做,itertools.product如下所示:
>>> n = 3
>>> for j in it.product((0,1), repeat=n) :
... print j
...
(0, 0, 0)
(0, 0, 1)
(0, 1, 0)
(0, 1, 1)
(1, 0, 0)
(1, 0, 1)
(1, 1, 0)
(1, 1, 1)
Run Code Online (Sandbox Code Playgroud)
但我需要区别对待每个顶点,这取决于1在其坐标中找到的s 的数量,即(0, 1, 1),(1, 0, 1)并且 (1, 1, 0)都将接收相同的tratment,因为它们都有两个1s.而不是使用上面的迭代器,然后计算1s 的数量,我想生成按1s 的数量排序的笛卡尔积,类似于:
>>> for ones in xrange(n) :
... for seq in magic_expression(ones, …Run Code Online (Sandbox Code Playgroud) 我有一组 x、y 点,我想找到最适合的线,使该线低于使用 SciPy 的所有点。我正在尝试为此使用 leastsq ,但我不确定如何将线调整为低于所有点而不是最佳拟合线。最佳拟合线的系数可以通过以下方式产生:
def linreg(x, y):
fit = lambda params, x: params[0] * x - params[1]
err = lambda p, x, y: (y - fit(p, x))**2
# initial slope/intercept
init_p = np.array((1, 0))
p, _ = leastsq(err, init_p.copy(), args=(x, y))
return p
xs = sp.array([1, 2, 3, 4, 5])
ys = sp.array([10, 20, 30, 40, 50])
print linreg(xs, ys)
Run Code Online (Sandbox Code Playgroud)
输出是最佳拟合线的系数:
array([ 9.99999997e+00, -1.68071668e-15])
Run Code Online (Sandbox Code Playgroud)
如何获得低于所有点的最佳拟合线的系数?
我有一个numpy数组a,a.shape=(48,90,144).我想利用的加权平均值a沿着使用阵列的权重的第一轴线b,b.shape=(90,144).所以输出应该是一个numpy形状的数组(48,).
我知道这可以通过列表理解来完成:
np.array([np.average(a[i], weights=b) for i in range(48)])
Run Code Online (Sandbox Code Playgroud)
但我想避免必须从列表转换回numpy数组.
有人可以帮忙吗?我确信这可能是使用numpy函数和切片,但我卡住了.谢谢!
我有一些代码片段可以读取两个csv并使用matplotlib.pyplot绘制它们并在相同的两个csv上执行多项式回归.我想要做的是在同一图表上绘制数据和我的多项式回归.
import matplotlib.pyplot as plt
import csv
import numpy as np
datax=np.genfromtxt('Delta R.csv')
datay=np.genfromtxt('Example R.csv')
plt.title ('Test graph ')
plt.xlabel('x axis')
plt.ylabel('y axis ')
plt.plot(datax, datay,'o-')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我的第二段代码只执行多项式回归
import matplotlib.pyplot as plt
import csv
import numpy as np
datax=np.genfromtxt('Delta R.csv')
datay=np.genfromtxt('Example R.csv')
z = np.polyfit(datax,datay,5)
print z
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我在与原始数据相同的图中绘制这个5阶polynomail回归的结果.谢谢GTPE
编辑
tcaswell提供的代码完美无缺.我唯一的问题是为什么多项式在某些地方出现如此棱角分明.这是我的示例图片:

所以我有下面的代码读取文件,并使用genfromtxt给我一个ndarray:
arr = np.genfromtxt(filename, delimiter=',', converters={'Date': make_date},
names=('Date', 'Name','Age'), dtype=None)
Run Code Online (Sandbox Code Playgroud)
现在,我希望在arr中添加另一个名为"Marks"的专栏.你能帮我解决一下我怎么做的吗?
我有一个3xNxM numpy数组a,我想迭代最后两个轴:a [:,x,y].优雅的方法是:
import numpy as np
a = np.arange(60).reshape((3,4,5))
M = np. array([[1,0,0],
[0,0,0],
[0,0,-1]])
for x in arange(a.shape[1]):
for y in arange(a.shape[2]):
a[:,x,y] = M.dot(a[:,x,y])
Run Code Online (Sandbox Code Playgroud)
这可以用nditer完成吗?这样做的目的是对每个条目执行矩阵乘法,例如[:,x,y] = M [:,:,x,y] .dot(a [:,x,y]).另一种MATLAB风格的方法是将a(3,N*M)和M重塑为(3,3*N*M)并采用点积,但这往往会占用大量内存.
numpy ×6
python ×6
scipy ×2
algorithm ×1
concat ×1
csv ×1
matplotlib ×1
matrix ×1
permutation ×1
python-2.7 ×1