小编Jai*_*ime的帖子

scipy.sparse dot在Python中非常慢

以下代码甚至不会在我的系统上完成:

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)

有没有解释为什么这个矩阵乘法挂起?

python numpy scipy sparse-matrix

5
推荐指数
1
解决办法
2764
查看次数

在Python中重复的排列

我想迭代一个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)

python algorithm permutation

5
推荐指数
2
解决办法
4088
查看次数

线拟合低于点

我有一组 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)

如何获得低于所有点的最佳拟合线的系数?

python numpy scipy

4
推荐指数
1
解决办法
1271
查看次数

使用沿轴的多维权重进行Numpy平均

我有一个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函数和切片,但我卡住了.谢谢!

python numpy

4
推荐指数
1
解决办法
921
查看次数

在与真实数据相同的图中绘制多项式回归

我有一些代码片段可以读取两个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提供的代码完美无缺.我唯一的问题是为什么多项式在某些地方出现如此棱角分明.这是我的示例图片:

在此输入图像描述

csv numpy matplotlib python-2.7

3
推荐指数
1
解决办法
1759
查看次数

如何将列添加到ndarray?

所以我有下面的代码读取文件,并使用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"的专栏.你能帮我解决一下我怎么做的吗?

python concat numpy matrix

2
推荐指数
1
解决办法
3763
查看次数

在多维numpy数组中迭代向量

我有一个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)并采用点积,但这往往会占用大量内存.

python numpy

2
推荐指数
1
解决办法
1398
查看次数