Tag: numpy

在double_scalars中遇到无效值警告,可能是numpy

当我运行我的代码时,我会得到这些警告,总是以四个一组的forms出现。 我试图通过在某些语句之前和之后放置debugging消息来定位源,以查明其来源。 Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars 这是一个Numpy警告,什么是双标量? 从Numpy我使用 min(), argmin(), mean() and random.randn() 我也使用Matplotlib

并行化Numpyvector操作

让我们使用,例如, numpy.sin() 以下代码将返回数组a每个值的正弦值: import numpy a = numpy.arange( 1000000 ) result = numpy.sin( a ) 但是我的机器有32个内核,所以我想利用它们。 (对于像numpy.sin()这样的开销可能不值得,但我真正想使用的函数更复杂一些,而且我将使用大量的数据。) 这是最好的(阅读:最聪明或最快)方法: from multiprocessing import Pool if __name__ == '__main__': pool = Pool() result = pool.map( numpy.sin, a ) 还是有更好的方法来做到这一点?

使用scipy计算matrix排名

我想用scipy来计算一个matrix的math等级 。 最明显的函数numpy.rank计算数组的维数(即标量具有维0,向量1,matrix2等)。 我知道numpy.linalg.lstsq模块有这个function,但是我想知道这样一个基本的操作是否内置到matrix类的某处。 这是一个明确的例子: from numpy import matrix, rank A = matrix([[1,3,7],[2,8,3],[7,8,1]]) print rank(A) 这给了2维度,我正在寻找答案3 。

在列表中find第n个项目的索引

我想查找列表中第n个项目的索引。 例如, x=[False,True,True,False,True,False,True,False,False,False,True,False,True] 什么是真正的指标? 如果我想要第五次出现(如果是零索引,则为第四次),答案是10。 我已经想出了: indargs = [ i for i,a in enumerate(x) if a ] indargs[n] 请注意, x.index返回第一次出现或某个点后的第一次出现,因此,据我所知,不是一个解决scheme。 也有类似于上面的情况numpy的解决scheme,例如使用cumsum和where ,但我想知道是否有一个numpy自由的方式来解决这个问题。 自从我第一次遇到这个问题以来,我担心的是性能问题,同时为EH 项目实施了Eratosthenes筛选,但这是我在其他情况下遇到的一个更普遍的问题。 编辑:我得到了很多很好的答案,所以我决定做一些性能testing。 以下列出了len元素search第4000个/ 1000个True的列表的时间执行时间(秒)。 该列表是随机的真/假。 下面链接的源代码; 这是一个混乱。 我使用海报名称的短/修改版本来描述listcomp之外的function,这是上面简单的列表理解。 True Test (100'th True in a list containing True/False) nelements eyquem_occur eyquem_occurrence graddy taymon listcomp hettinger26 hettinger 3000: 0.007824 0.031117 0.002144 0.007694 0.026908 0.003563 […]

如何用Python3.2安装matplotlib

我在ubuntu中安装了python3.2(默认版本不被删除),我按照这里的步骤 但是,当我使用 python3.2 setup.py install 我有: "error: command 'gcc' failed with exit status 1", "src/ft2font.cpp:2224:29: error: 'Int' is not a member of 'Py'" 当我使用sudo apt-get install python-matplotlib我可以在python2.x中使用matplot,而我仍然不能在python3.2中使用它。我如何在python3.2中安装matplot?

使用Python / C接口而不是Cython有优势吗?

我想用C或C ++编写一些模块,使用BLAS和LAPACK扩展python和numpy。 我也希望能够将代码作为独立的C / C ++库进行分发。 我想这个库使用单精度浮点数和双精度浮点数。 我将写的函数的一些例子是求解线性系统或加速一阶方法的共轭梯度。 一些函数需要从C / C ++代码调用Python函数。 在用Python / C API和Numpy / C API玩了一下之后,我发现很多人主张使用Cython(参见例如这个问题或这个 问题 )。 我不是Cython的专家,但似乎在某些情况下 ,您仍然需要使用Numpy / C API并知道它是如何工作的。 鉴于我已经有了一些关于Python / C API的知识,而且还没有关于Cython的知识,所以我想知道继续使用Python / C API是否合理,如果使用这个API比Cython有一些优势。 未来,我肯定会开发一些不涉及数值计算的东西,所以这个问题不仅仅是关于数值计算的问题。 我喜欢关于Python / C API的事情之一是我学习了一些关于Python解释器是如何工作的。 谢谢。

任意长度的string的Python numpy数组

我是一个Python的完整的新手,但它似乎是一个给定的string能够(有效)任意长度。 也就是说,你可以采取一个string str并保持添加: str += "some stuff…" 。 有没有办法让这样的string数组? 当我尝试这个时,每个元素只存储一个字符 strArr = numpy.empty(10, dtype='string') for i in range(0,10) strArr[i] = "test" 另一方面,我知道我可以初始化一个特定长度的string数组,即 strArr = numpy.empty(10, dtype='s256') 它可以存储最多256个字符的10个string

使用Python和numpy的渐变下降

def gradient(X_norm,y,theta,alpha,m,n,num_it): temp=np.array(np.zeros_like(theta,float)) for i in range(0,num_it): h=np.dot(X_norm,theta) #temp[j]=theta[j]-(alpha/m)*( np.sum( (hy)*X_norm[:,j][np.newaxis,:] ) ) temp[0]=theta[0]-(alpha/m)*(np.sum(hy)) temp[1]=theta[1]-(alpha/m)*(np.sum((hy)*X_norm[:,1])) theta=temp return theta X_norm,mean,std=featureScale(X) #length of X (number of rows) m=len(X) X_norm=np.array([np.ones(m),X_norm]) n,m=np.shape(X_norm) num_it=1500 alpha=0.01 theta=np.zeros(n,float)[:,np.newaxis] X_norm=X_norm.transpose() theta=gradient(X_norm,y,theta,alpha,m,n,num_it) print theta 我的theta从上面的代码是100.2 100.2 ,但它应该是100.2 61.09在matlab中是正确的。

在matplotlib图例中插入图像

我想插入一个小graphics(vectorgraphics,但可以制作光栅,如果有必要的话)到一个maplotlib图的图例。 图例中的每个项目都会有一个graphics。 我知道我可以使用类似注释框的方式手动绘制整个图例,但是看起来很乏味,图中任何小小的变化都需要手工修改。 有没有办法在pyplot.plot或更高版本的pyplot.legend调用中的标签中包含graphics?

如何在scipy / matplotlib中绘制和注释层次聚类树状图

我使用scipy dendrogram来绘制使用matplotlib层次聚类,如下所示: mat = array([[1, 0.5, 0.9], [0.5, 1, -0.5], [0.9, -0.5, 1]]) plt.subplot(1,2,1) plt.title("mat") dist_mat = mat linkage_matrix = linkage(dist_mat, "single") print "linkage2:" print linkage(1-dist_mat, "single") dendrogram(linkage_matrix, color_threshold=1, labels=["a", "b", "c"], show_leaf_counts=True) plt.subplot(1,2,2) plt.title("1 – mat") dist_mat = 1 – mat linkage_matrix = linkage(dist_mat, "single") dendrogram(linkage_matrix, color_threshold=1, labels=["a", "b", "c"], show_leaf_counts=True) 我的问题是:首先,为什么mat和1-mat在这里给出相同的聚类? 其次,我怎样才能使用dendrogram注释沿着树的每个分支的距离,使得节点对之间的距离可以比较? 最后似乎show_leaf_counts标志被忽略,有没有办法打开它,以便在每个类中的对象数量显示? […]