小编ask*_*han的帖子

具有多个输入的Scipy LinearOperator

我需要反转一个大的,密集的矩阵,我希望使用Scipy gmres来做.幸运的是,密集矩阵A遵循模式,我不需要将矩阵存储在内存中.在LinearOperator类允许我们构建其用作基质GMRES一个对象,并可以直接计算矩阵矢量乘积A*v.也就是说,我们编写一个函数mv(v),它将向量作为输入v并返回mv(v) = A*v.然后,我们可以使用LinearOperator该类来创建A_LinOp = LinearOperator(shape = shape, matvec = mv).我们可以将线性运算符放入Scipy gmres命令中来评估矩阵向量积,而无需完全加载A到内存中.

该文档可在LinearOperator此处找到:LinearOperator文档.

这是我的问题:编写例程来计算矩阵向量积mv(v) = A*v,我需要另一个输入向量C.条目A是表格A[i,j] = f(C[i] - C[j]).所以,我真正想要的是mv两个输入,一个固定矢量输入C和一个v我们想要计算的变量输入A*v.

MATLAB具有类似的设置,其中将写入x = gmres(@(v) mv(v,C),b)在那里b是问题的右手侧Ax = b,并且mv是取作为变量输入的功能v,我们需要计算A*vC …

python matlab numpy matrix matrix-multiplication

8
推荐指数
1
解决办法
1150
查看次数

将open调用作为参数传递给另一个函数后,文件对象是否已关闭?

如果我只想使用一次file对象,通常我会在完成后仍然使用with块或显式关闭file对象,因为关闭文件似乎是正确的事情:

with open('filename','r') as f:
    x = dosomething(f)
Run Code Online (Sandbox Code Playgroud)

要么

f = open('filename','r')
x = dosomething(f)
f.close()
Run Code Online (Sandbox Code Playgroud)

但是,我看到人们使用将调用open直接传递给函数而不将输出保存到任何变量,从而无法显式关闭:

x = dosomething(open('filename','r'))
Run Code Online (Sandbox Code Playgroud)

所以,这些都是真的,

  1. 不知何故,未命名的文件对象被关闭
  2. 没关系,关闭文件没关系

或者这是一种不好的做法?

另外,如果我允许文件读/写,答案是否会改变?

要清楚,dosomething可能是np.array()或类似的东西for i in f.readlines()

python

7
推荐指数
1
解决办法
838
查看次数

Scipy Interp1d和Matlab Interp1

以下是我的插值输入:

x = [-1.01, 5.66, 5.69, 13.77, 20.89]

y = [0.28773, 1.036889, 1.043178, 1.595322, 1.543763]

new_x = [0, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20]
Run Code Online (Sandbox Code Playgroud)

从结果matlab interp1scipy.interpolate interp1d不同。
结果是这样的。

new_y_scipy=[0.401171, 0.625806, 0.850442, 1.062384, 1.186291, 1.248244, 1.310198, 1.372152, 1.434105, 1.496059, 1.545429, 1.55267, 1.559911, 1.567153, 1.574394, 1.588877,]

new_y_matlab=[0.401171, 0.625806, 0.850442, 1.064362, 1.201031, 1.269366, 1.3377, 1.406035, 1.47437, 1.542704, 1.593656, 1.586415, 1.579174, 1.571932, 1.564691, 1.550208]
Run Code Online (Sandbox Code Playgroud)

显然matlab似乎比更好的结果scipy。基本区别是什么?

matlab interpolation scipy

7
推荐指数
1
解决办法
9568
查看次数

通过索引雕刻2D numpy数组

如何根据索引公式"雕刻"或掩盖2D numpy数组?我不关心元素值是什么,只关心它在数组中的位置.

例如,给定一个mxm数组,如何提取地址符合的所有元素

for i in range(0,m):
    for j in range(0,m):
        if j-i-k>=0:
            A[i,j] = 1
        elif j-p-k>=0:
            A[i,j] = 1
        elif i-k>=0:
            A[i,j] = 1
        else:
            A[i,j] = 0
        j=j+1
    i=i+1
Run Code Online (Sandbox Code Playgroud)

哪里

k和p是任意围栏

假设

k<m
p<m
Run Code Online (Sandbox Code Playgroud)

这最终看起来像对角切片+水平切片+垂直切片.可以在没有上面的for循环的情况下完成吗?

python arrays numpy slice

6
推荐指数
1
解决办法
374
查看次数

Gdata python谷歌应用程序身份验证

我已经能够使用client.programmaticlogingdata下载包中的示例/电子表格,使用gdata python 函数登录Google电子表格.

现在我无法登录我的企业gapps'me@mycompany.com'我是否必须通过任何其他武器?我试过帐户类型托管没有工作.

我尝试oath2从gui 创建密钥,我生成了客户端ID和电子邮件ID.在gdata中运行oauth示例会询问consumerkey和secret密钥.有人可以就此提出建议吗?

python gdata oauth-2.0

6
推荐指数
1
解决办法
3222
查看次数

直方图与日期时间向量的时间箱

我在python中有一个带日期(日期时间)的向量.如何根据此向量上的出现情况绘制15分钟的柱状图?

这是我做的:

StartTime = []
for b in myEvents:
    StartTime.append(b['logDate'].time())
Run Code Online (Sandbox Code Playgroud)

如您所见,我将日期转换为时间.(我从mongoDB查询中获取myEvents)

fig2 = plt.figure()
ax = fig2.add_subplot(111)
ax.grid(True,which='both')
ax.hist(StartTime,100)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

TypeError: can't compare datetime.time to float
Run Code Online (Sandbox Code Playgroud)

我理解错误,但我无法弄清楚如何解决它.

非常感谢您的帮助

python datetime matplotlib histogram

6
推荐指数
1
解决办法
7045
查看次数

Numpy:考虑项目的邻居及其在阵列中的位置的快速计算

我有4个2D numpy数组,称为a, b, c, d每个数组由n行和m列组成.我需要做的是给每个元素bd一个如下计算的值(伪代码):

min_coords = min_of_neighbors_coords(x, y)
b[x,y] = a[x,y] * a[min_coords];
d[x,y] = c[min_coords];
Run Code Online (Sandbox Code Playgroud)

min_of_neighbors_coords给定数组元素坐标的函数在哪里返回具有较低值的'neighbor'元素的坐标.即,考虑到阵列:

1, 2, 5
3, 7, 2
2, 3, 6
Run Code Online (Sandbox Code Playgroud)

min_of_neighbors_coords(1, 1)将引用具有值的中心元素7,并将返回元组(0, 0):数字的坐标1.

我设法使用for循环(每个元素的元素),但算法非常慢,我正在寻找一种方法来改进它,避免循环,并要求计算numpy.

可能吗?

python numpy

6
推荐指数
1
解决办法
1241
查看次数

在Python中生成相关数据(3.3)

在R中,有一个函数(cm.rnorm.cor来自包CreditMetrics),它采用样本量,变量数量和相关矩阵来创建相关数据.

Python中有相应的东西吗?

python numpy r scipy correlation

6
推荐指数
2
解决办法
7064
查看次数

使用带有多维数组的np.savetxt和np.loadtxt

什么是存储多于2维的数组(ndim > 2)到文件并使用np.savetxt和以相同的格式(维度)检索它的通用方法是什么np.loadtxt

我担心的是,如果我在存储时给出任何分隔符,我是否需要在检索时给予一些处理?再加上浮动并以相同的格式检索它并不是一件小事.

我在文档中看到了很多简单的例子.我只是想知道是否np.savetxt(filename, array)可以简单地检索最简单的存储array = np.loadtxt(filename).

python arrays file-io numpy multidimensional-array

6
推荐指数
1
解决办法
816
查看次数

获得轴的纵横比

是否有一种简单可靠的方法来确定axes其方面设置'auto'为何时的当前宽高比?

要检查的显而易见的事情是ax.get_aspect(),但这只是回归'auto'.我可以将它设置为任意常量值ax.set_aspect(aspect),之后返回相同的常量ax.get_aspect().默认情况下(非常有用)我们有aspect = 'auto',在这种情况下,自动计算和调整宽高比以匹配数据限制和轴大小.
如何获得自动选择的数字宽高比?

为了澄清,这既不是返回的数据限制ax.get_data_ratio()的宽高比,也不是由(图中)返回的图形或子图的显示尺寸的宽高比fig.get_figheight() / fig.get_figwidth().它有点微妙,因为它取决于显示尺寸和数据限制.(这可能导致混淆不同的比率,以及我认为让它易于访问很重要的原因.)

python matplotlib

6
推荐指数
2
解决办法
2119
查看次数