草庐IT

python - 基于 DataFrame 将参数传递给 stats.friedmanchisquare 的正确方法是什么?

我正在尝试将值从数据帧df传递到stats.friedmanchisquare,其形状为(11,17)。这就是对我有效的方法(在此示例中仅适用于三行):df=df.as_matrix()printstats.friedmanchisquare(df[1,:],df[2,:],df[3,:])产生(16.714285714285694,0.00023471398805908193)但是,当我想使用df的所有11行时,代码行太长了。首先,我尝试通过以下方式传递值:df=df.as_matrix()printstats.friedmanchisquare([df[x,:]forxinnp.a

python - 是什么导致我的矩阵向量乘法的 Cython 实现速度减慢 2 倍?

我目前正尝试在Cython中实现基本的矩阵向量乘法(作为muchlargerprojecttoreducecomputation的一部分)并发现我的代码比Numpy.dot慢大约2倍。我想知道是否有什么东西是我遗漏的导致速度变慢的。我正在编写优化的Cython代码,声明变量类型,需要连续数组,并避免缓存未命中。我什至尝试将Cython作为包装器并调用nativeC代码(见下文)。我想知道:我还能做些什么来加快我的实现速度,使这个基本操作的运行速度与NumPy一样快?我使用的Cython代码如下:importnumpyasnpcimportnumpyasnpcimportcythonDT

python - Python 中的矩阵求幂

我试图在Python中对复杂矩阵取幂,但遇到了一些麻烦。我正在使用scipy.linalg.expm函数,当我尝试以下代码时出现了一条相当奇怪的错误消息:importnumpyasnpfromscipyimportlinalghamiltonian=np.mat('[1,0,0,0;0,-1,0,0;0,0,-1,0;0,0,0,1]')#Thisworkst_list=np.linspace(0,1,10)unitary=[linalg.expm(-(1j)*t*hamiltonian)fortint_list]#Thisdoesn'tt_list=np.linspace(0,10,

python - 找到包含 0 个样本 (shape=(0, 40)) 的数组,而至少需要 1 个

我正在使用Python2.7、sklearn0.17.1、numpy1.11.0测试一个简单的预测程序。我从LDA模型中获得了概率矩阵,现在我想创建RandomForestClassifier以通过概率预测结果。我的代码是:maxlen=40props=[]fordocincorpus:topics=model.get_document_topics(doc)tprops=[0]*maxlenfortopicintopics:tprops[topics[0]]=topics[1]props.append(tprops)ntheta=np.array(props)ny=np.array(

python - matplotlib bwr-colormap,始终以零为中心

我正在尝试绘制一个包含正数和负数的矩阵。数字将在-1到1的区间内,但不在完整范围内。例如,数字有时可能在-0.2到+0.8的范围内(参见下面的代码)。我想使用bwr-colormap(蓝色->白色-红色),这样零总是用白色进行颜色编码。-1应该用尽可能深的蓝色进行颜色编码,+1应该用尽可能深的红色进行颜色编码。下面是一个示例,其中两个图只能通过颜色条来区分。importnumpyfrommatplotlibimportpyplotasplt#somearbitrarydatatoplotx=numpy.linspace(0,2*numpy.pi,30)y=numpy.linspace(

python - 在安装 Python 3.4 的同时为 Python 2.7 安装 numpy?

我同时拥有Python2.7和Python3.4(并且必须同时拥有这两者,因为对于我正在运行的类(class),学生可以选择使用其中之一)。一名学生在他们的项目中使用了Python2.7和numpy,但是当我尝试安装numpy时,它安装到3.4。我需要将它安装到2.7。我正在使用来自该站点的numpy1.9,有人告诉我它也是2.7特定的:http://sourceforge.net/projects/numpy/files/NumPy/但是,它仍然会进入3.4文件夹。显然,将它复制到Python2.7是行不通的。我该怎么做? 最佳答案

python - Cython 的 prange 没有提高性能

我正在尝试使用Cython的prange提高某些度量计算的性能。这是我的代码:defshausdorff(float64_t[:,::1]XAnotNone,float64_t[:,:,::1]XBnotNone):cdef:Py_ssize_tiPy_ssize_tn=XB.shape[2]float64_t[::1]hdist=np.zeros(n)#arrangementtofixcontiguityXB=np.asanyarray([np.ascontiguousarray(XB[:,:,i])foriinrange(n)])foriinrange(n):hdist[i]=_h

python - 如何使用来自对函数的单独调用的值快速填充 numpy 数组

我想用生成的值填充一个numpy数组。这些值由生成器函数生成。数组长度不太长,通常到目前为止,我已经可以用vanillapython做到这一点:defgenerate():returngenerated_dataarray=np.asarray([generate()for_inrange(array_length)])我也尝试过使用np.full(shape,fill_value):np.full((array_length,generated_data_size),generate())但这是只调用一次generate()函数,而不是对数组中的每个索引调用一次。我也尝试过np.ve

python - 根据总和对numpy数组进行排序

我想根据总和对一个numpy数组进行排序。有点像importnumpyasnpa=np.array([1,2,3,8],[3,0,2,1])b=np.sum(a,axis=0)idx=b.argsort()现在np.take(a,idx)导致[2,1,3,8]。但我想要一个数组:result=np.array([2,1,3,8],[0,3,2,1]]最聪明、最快的方法是什么? 最佳答案 使用您问题中的相同代码,您可以只使用可选的axis参数np.take(默认使用展平数组,这就是你得到的原因仅第一行,请参阅documentation

python - 在一组固定的元素上生成特定秩的 "random"矩阵

我想生成大小为m的矩阵xn并排名r,元素来自指定的有限集,例如{0,1}或{1,2,3,4,5}.我希望它们在这个词的某种非常宽松的意义上是“随机的”,即我想从算法中获得各种可能的输出,其分布与具有指定秩的该组元素上的所有矩阵的分布模糊相似。事实上,我并不关心它的等级是r,只是它接近一个秩为r的矩阵(由Frobenius范数测量)。当手头的集合是实数时,我一直在执行以下操作,这完全可以满足我的需要:生成矩阵U尺寸mxr和V的nxr,元素独立采样自例如正常(0,2)。然后UV'是一个mxn秩矩阵r(嗯,,但我认为它很有可能是r)。不过,如果我只是这样做然后四舍五入到二进制/1-5,排名会