标签: scipy

使用scipy计算矩阵秩

我想用scipy 计算矩阵的数学等级.最明显的函数numpy.rank计算数组的维数(即标量有维度0,向量1,矩阵2等).我知道该numpy.linalg.lstsq模块具有此功能,但我想知道这样的基本操作是否内置于矩阵类中.

这是一个明确的例子:

from numpy import matrix, rank
A = matrix([[1,3,7],[2,8,3],[7,8,1]])
print rank(A)
Run Code Online (Sandbox Code Playgroud)

这给出2了维度,我正在寻找答案3.

python numpy matrix scipy

40
推荐指数
3
解决办法
3万
查看次数

Python curve_fit有多个自变量

Python curve_fit使用单个自变量计算函数的最佳拟合参数,但有没有办法,使用curve_fit或其他东西,以适应具有多个独立变量的函数?例如:

def func(x, y, a, b, c):
    return log(a) + b*log(x) + c*log(y)
Run Code Online (Sandbox Code Playgroud)

其中x和y是自变量,我们想要适合a,b和c.

python curve-fitting scipy

40
推荐指数
2
解决办法
3万
查看次数

稀疏CSR阵列的核外处理

如何在使用Python保存在磁盘上的稀疏CSR数组的块上并行应用某些函数?顺序地,这可以例如通过保存CSR阵列并且joblib.dump打开它joblib.load(.., mmap_mode="r")并逐个处理行的块来完成.使用dask可以更有效地完成这项工作吗?

特别是,假设一个人不需要在稀疏数组上完成所有可能的核心操作,而只需要并行加载行块(每个块是一个CSR数组)并对它们应用一些函数(在我的情况下它会例如estimator.predict(X)来自scikit-learn).

此外,磁盘上是否有适合此任务的文件格式?Joblib有效,但我不确定作为内存映射加载的CSR数组的(并行)性能; spark.mllib似乎使用一些自定义稀疏存储格式(似乎没有纯Python解析器)或LIBSVM格式(根据我的经验,scikit-learn中的解析器比它慢得多joblib.dump)...

注意:我在https://github.com/dask/dask/上阅读了文档,有关它的各种问题,但我仍然不确定如何最好地解决这个问题.

编辑:为了给出一个更实际的例子,下面是在密码数组的dask中工作的代码,但在使用带有此错误的稀疏数组时失败,

import numpy as np
import scipy.sparse

import joblib
import dask.array as da
from sklearn.utils import gen_batches

np.random.seed(42)
joblib.dump(np.random.rand(100000, 1000), 'X_dense.pkl')
joblib.dump(scipy.sparse.random(10000, 1000000, format='csr'), 'X_csr.pkl')

fh = joblib.load('X_dense.pkl', mmap_mode='r')

# computing the results without dask
results = np.vstack((fh[sl, :].sum(axis=1)) for sl in gen_batches(fh.shape[0], batch_size))

# computing the results with dask
x = da.from_array(fh, chunks=(2000)) …
Run Code Online (Sandbox Code Playgroud)

python scipy joblib dask apache-spark-mllib

39
推荐指数
1
解决办法
1320
查看次数

如何访问稀疏矩阵元素?

type(A)
<class 'scipy.sparse.csc.csc_matrix'>
A.shape
(8529, 60877)
print A[0,:]
  (0, 25)   1.0
  (0, 7422) 1.0
  (0, 26062)    1.0
  (0, 31804)    1.0
  (0, 41602)    1.0
  (0, 43791)    1.0
print A[1,:]
  (0, 7044) 1.0
  (0, 31418)    1.0
  (0, 42341)    1.0
  (0, 47125)    1.0
  (0, 54376)    1.0
print A[:,0]
  #nothing returned
Run Code Online (Sandbox Code Playgroud)

现在我不明白的是当我输入A [1,:]时应该从第2行中选择元素,但是我从打印的第1行中获取元素.当我输入应该返回第一列的A [:,0]但是我没有打印任何内容.为什么?

python scipy

38
推荐指数
3
解决办法
6万
查看次数

`anaconda`是否为每个新环境创建一个单独的PYTHONPATH变量?

我开始使用Continuum.io的Python Anaconda发行版来完成scipy工作.
我已经能够启动并运行Anaconda,但我不知道Anaconda是否为它创建的每个新环境创建了一个新的PYTHONPATH环境变量,或者它是否依赖于通用系统. PYTHONPATH

我在文档中找不到任何相关信息.

此外,当我做了一个时printenv,我没有PYTHONPATH在新创建的环境中看到变量 - 虽然我确实找到了一些新的anaconda创建的环境变量.

我能找到的最好的是Anaconda将一些Anaconda目录和新的环境目录添加到PATH变量的头部 - 但这并不一定将新的包与系统环境隔离,但它很接近.

有谁知道这个问题的答案或找到解决这个问题的方法?

python environment-variables scipy anaconda

38
推荐指数
2
解决办法
10万
查看次数

SciPy创建2D多边形蒙版

我需要使用标准的Python包创建一个numpy 2D数组,它表示多边形的二进制掩码.

  • 输入:多边形顶点,图像尺寸
  • 输出:多边形的二进制掩码(numpy 2D数组)

(更大的上下文:我想使用scipy.ndimage.morphology.distance_transform_edt获取此多边形的距离变换.)

谁能告诉我怎么做?

python polygon scipy sage point-in-polygon

37
推荐指数
4
解决办法
3万
查看次数

numpy.void类型 - 如何使用它?

.mat通过scipy.io.loadmat它加载了一个MATLAB 文件,它给了我一个numpy.void对象列表.

有人可以告诉我它们是什么,如何使用它们以及在哪里可以获得一些参考文档

python matlab numpy scipy

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

用Python进行逆距离加权(IDW)插值

问题: 对于点位置,在Python中计算反距离加权(IDW)插值的最佳方法是什么?

一些背景: 目前我正在使用RPy2与R及其gstat模块进行交互.不幸的是,gstat模块与arcgisscripting冲突,我通过在单独的进程中运行基于RPy2的分析来解决这个问题.即使在最近/未来版本中解决了这个问题,并且效率可以提高,我仍然希望删除我对安装R的依赖.

gstat网站确实提供了一个独立的可执行文件,使用我的python脚本更容易打包,但我仍然希望Python解决方案不需要多次写入磁盘并启动外部进程.插值函数的调用次数,单独的点和值集,在我正在执行的处理中可以接近20,000.

我特别需要为点进行插值,因此在性能方面使用ArcGIS中的IDW函数生成比使用R更严重的栅格声音.....除非有办法有效地屏蔽掉我需要的点.即使进行了这种修改,我也不希望性能如此出色.我会将此选项作为另一种选择.更新:这里的问题是你绑定到您正在使用的单元格大小.如果减小单元大小以获得更好的准确性,则处理需要很长时间.如果你想要特定点的值,你还需要通过点数提取来跟进所有丑陋的方法.

我看过scipy文档,但看起来没有一种直接计算IDW的方法.

我正在考虑滚动我自己的实现,可能使用一些scipy功能来定位最近的点并计算距离.

我错过了一些明显的东西吗 是否有一个我没见过的python模块完全符合我的要求?在scipy的帮助下创建自己的实现是明智的选择吗?

python interpolation numpy spatial scipy

36
推荐指数
2
解决办法
4万
查看次数

有numpy/scipy的测试套件吗?

我要重新安装numpy,并scipy在我的Ubuntu清醒.由于这些东西带有很多依赖项,我想知道是否有一个全面的测试套件来检查新安装是否真的有效.

当然,我可以拿一堆我的脚本并逐个运行它们以确定它们是否继续工作,但这无法防止在将来的某个时候我会尝试使用我没有做过的事情.以前使用它会破坏(或者更糟糕的是,默默地产生不存在).

python numpy scipy

36
推荐指数
2
解决办法
2万
查看次数

从一组值中评估sympy表达式

我正在试验同情,我遇到了一个我无法解决的问题.

使用scipy我可以编写一个表达式并为其计算x值的数组,如下所示:

import scipy
xvals = scipy.arange(-100,100,0.1)
f = lambda x: x**2
f(xvals)
Run Code Online (Sandbox Code Playgroud)

使用sympy我可以写相同的表达式如下:

import sympy
x = sympy.symbols('x')
g = x**2
Run Code Online (Sandbox Code Playgroud)

我可以通过执行以下操作来评估此表达式的单个值:

g.evalf(subs={x:10})
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚如何评估x值的数组,就像我用scipy做的那样.我该怎么做?

python sympy scipy

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