小编Sau*_*tro的帖子

Sympy中的因子/收集表达

我有一个等式:

     R??V? + R??V? - R??V?
i? = ?????????????????????
     R??R? + R??R? + R??R?
Run Code Online (Sandbox Code Playgroud)

已定义,我想将其拆分为仅包含单个变量的因子 - 在本例中为V1和V2.

所以我希望如此

        -R?                        (R? + R?)
i? = V??????????????????????? + V???????????????????????
        R??R? + R??R? + R??R?      R??R? + R??R? + R??R?
Run Code Online (Sandbox Code Playgroud)

但到目前为止我能做到的最好的是

     -R??V? + V??(R? + R?)
i? = ?????????????????????
     R??R? + R??R? + R??R?
Run Code Online (Sandbox Code Playgroud)

使用equation.factor(V1,V2).因果或其他方法还有一些其他选项可以进一步分离变量吗?

python symbolic-math sympy symbolic-computation

11
推荐指数
1
解决办法
4669
查看次数

Numba在分配数组时会变慢吗?

Numba似乎是加速数字代码执行的绝佳解决方案.但是,当有数组赋值时,Numba似乎比标准Python代码慢.考虑这个例子比较四个替代方案,有/无Numba,写入数组/标量:

(计算保持非常简单,专注于问题,即分配给标量与分配到数组单元格)

@autojit
def fast_sum_arr(arr):
    z = arr.copy()
    M = len(arr)
    for i in range(M):
        z[i] += arr[i]

    return z

def sum_arr(arr):
    z = arr.copy()
    M = len(arr)
    for i in range(M):
        z[i] += arr[i]

    return z

@autojit
def fast_sum_sclr(arr):
    z = 0
    M = len(arr)
    for i in range(M):
        z += arr[i]

    return z

def sum_sclr(arr):
    z = 0
    M = len(arr)
    for i in range(M):
        z += arr[i]

    return z
Run Code Online (Sandbox Code Playgroud)

使用IPython的%timeit来评估我得到的四个替代方案:

In [125]: %timeit fast_sum_arr(arr)
100 loops, best …
Run Code Online (Sandbox Code Playgroud)

python arrays numba

11
推荐指数
1
解决办法
1646
查看次数

cython中的cython共享内存.parallel.prange - block

我有一个函数foo,它将一个指向内存的指针作为参数,并且对该内存进行写入和读取:

cdef void foo (double *data):
   data[some_index_int] = some_value_double
   do_something_dependent_on (data)
Run Code Online (Sandbox Code Playgroud)

data这样分配:

cdef int N = some_int
cdef double *data = <double*> malloc (N * sizeof (double))

cdef int i
for i in cython.parallel.prange (N, nogil=True):
    foo (data)

readout (data)
Run Code Online (Sandbox Code Playgroud)

我现在的问题是:不同的线程如何对待这个?我的猜测是指向的内存data将由所有线程共享,并在函数内部"同时"读取或写入foo.这会弄乱所有结果,因为人们不能依赖先前设定的数据值(内部foo)?我的猜测是正确的还是在cython编译器中实现了一些神奇的安全带?

非常感谢你提前.

python malloc parallel-processing cython python-multithreading

11
推荐指数
2
解决办法
3091
查看次数

numpy ndarrays:行式和列式操作

如果我想将一个函数逐行(或逐列)应用于ndarray,我是否会看到ufuncs(看起来不像)或某种类型的数组广播(不是我正在寻找的那个?) ?

编辑

我正在寻找类似R的应用功能.例如,

apply(X,1,function(x) x*2)
Run Code Online (Sandbox Code Playgroud)

将通过匿名定义的函数将2乘以X的每一行,但也可以是命名函数.(这当然是一个愚蠢的,人为的例子,apply实际上并不需要).没有通用的方法在NumPy数组的"轴"上应用函数,?

python arrays numpy multidimensional-array

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

考虑到NaNs的Numpy cumsum

我正在寻找一种简洁的方法:

 a = numpy.array([1,4,1,numpy.nan,2,numpy.nan])
Run Code Online (Sandbox Code Playgroud)

至:

  b = numpy.array([1,5,6,numpy.nan,8,numpy.nan])
Run Code Online (Sandbox Code Playgroud)

我目前能做的最好的事情是:

b = numpy.insert(numpy.cumsum(a[numpy.isfinite(a)]), (numpy.argwhere(numpy.isnan(a)) - numpy.arange(len(numpy.argwhere(numpy.isnan(a))))), numpy.nan)
Run Code Online (Sandbox Code Playgroud)

是否有更短的方法来实现相同的目标?那么沿着2D阵列的轴做一个cumsum呢?

python arrays numpy nan cumsum

10
推荐指数
3
解决办法
2518
查看次数

使图例对应于matplotlib中散点的颜色

我有一个情节,我通过scikit-learn中的KMeans算法生成.簇对应于不同的颜色.这是情节, 在此输入图像描述

我需要一个这个图的图例,它对应于图中的簇编号.理想情况下,图例应显示群集的颜色,标签应为群集编号.谢谢.

编辑:我认为我应该放一些代码,因为人们正在贬低这个

from sklearn.cluster import KMeans
km = KMeans(n_clusters=20, init='random')   
km.fit(df)  #df is the dataframe which contains points as coordinates
labels = km.labels_
plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111, axisbg='w', frame_on=True)
fig.set_size_inches(18.5, 10.5)

# Plot the clusters on the map
# m is a basemap object
m.scatter(
         [geom.x for geom in map_points],
         [geom.y for geom in map_points],
         20, marker='o', lw=.25,
         c = labels.astype(float),
         alpha =0.9, antialiased=True,
         zorder=3)
m.fillcontinents(color='#555555')
plt.show()
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib legend

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

调整文本背景透明度

我试图在matplotlib图上放一些带背景的文字,文字和背景都是透明的.以下代码

import numpy as np
import matplotlib.pyplot as plt
plt.figure()
ax = plt.subplot(111)
plt.plot(np.linspace(1,0,1000))
t = plt.text(0.03,.95,'text',transform=ax.transAxes,backgroundcolor='0.75',alpha=.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)

使文本相对于文本的背景是半透明的,但背景相对于它在图中模糊的线条完全不透明.

t.figure.set_alpha(.5)
Run Code Online (Sandbox Code Playgroud)

t.figure.patch.set_alpha(.5)
Run Code Online (Sandbox Code Playgroud)

也不做伎俩.

python plot transparency text matplotlib

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

计算1D numpy数组中的局部均值

我有1D NumPy数组如下:

import numpy as np
d = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
Run Code Online (Sandbox Code Playgroud)

我想计算(1,2,6,7),(3,4,8,9)等的平均值.这涉及4个元素的平均值:两个连续元素和两个连续元素后面的5个位置.

我尝试了以下方法:

>> import scipy.ndimage.filters as filt
>> res = filt.uniform_filter(d,size=4)
>> print res
[ 1  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这并没有给我预期的结果.我该怎么做?

python arrays numpy mean scipy

10
推荐指数
1
解决办法
829
查看次数

N用户为R用户?

这里有长期的R和Python用户.我使用R进行日常数据分析,使用Python进行文本处理和shell脚本更重的任务.我正在处理越来越大的数据集,当我得到它们时,这些文件通常是二进制文件或文本文件.我通常做的事情类型是在大多数情况下应用统计/机器学习算法并创建统计图形.我有时使用R和SQLite,并为迭代密集型任务编写C语言; 在研究Hadoop之前,我正在考虑在NumPy/Scipy上投入一些时间,因为我听说它有更好的内存管理[并且我的背景转换为Numpy/Scipy看起来并不那么大] - 我想知道是否有人有经验使用这两个,并可以评论这方面的改进,如果Numpy中有成语来处理这个问题.(一世' 我也知道Rpy2,但想知道Numpy/Scipy能否满足我的大部分需求).谢谢 -

python numpy r scipy

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

matplotlib的自定义箭头样式,pyplot.annotate

我正在使用matplotlib.pyplot.annotate在我的情节上绘制一个箭头,如下所示:

import matplotlib.pyplot as plt
plt.annotate("",(x,ybottom),(x,ytop),arrowprops=dict(arrowstyle="->"))
Run Code Online (Sandbox Code Playgroud)

我想使用箭头样式,一端是扁平线,另一端是箭头,所以组合样式"| - |" 和" - >"做一些我们称之为"| - >"的东西,但我无法弄清楚如何定义自己的风格.

我想我可能会尝试类似的东西

import matplotlib.patches as patches                                                                                                                                                                              
myarrow = patches.ArrowStyle("Fancy", head_length=0.4,head_width=0.2)
Run Code Online (Sandbox Code Playgroud)

(现在应该与" - >"相同;我可以稍后调整样式)但是如何告诉plt.annotate使用myarrow作为样式?plt.annotate没有arrowstyle属性,而arrowprops = dict(arrowstyle = myarrow)也不起作用.

我也尝试在arrowprops字典中定义它,例如

plt.annotate("",(x,ybottom),(x,ytop),arrowprops=dict(head_length=0.4,head_width=0.2))
Run Code Online (Sandbox Code Playgroud)

但这给了我关于没有属性'set_head_width'的错误.

那么,我如何定义自己的pyplot.annotate样式呢?

python customization plot annotate matplotlib

9
推荐指数
1
解决办法
6810
查看次数