matplotlib需要帮助.是的,我没有忘记调用pyplot.show().
import matplotlib.pyplot as p
p.plot(range(20), range(20))
Run Code Online (Sandbox Code Playgroud)
它matplotlib.lines.Line2D at 0xade2b2c作为输出返回.
p.show()
Run Code Online (Sandbox Code Playgroud)
没有任何事情发生.没有错误消息.没有新窗口.没有.我matplotlib使用pip 安装,我没有收到任何错误消息.
细节:
我用,
我们正在使用Python 制作一些kNN和SVD实现.其他人选择了Java.我们的执行时间非常不同.我使用cProfile来查看我在哪里犯错但实际上一切都很好.是的,我numpy也用.但我想问一个简单的问题.
total = 0.0
for i in range(9999): # xrange is slower according
for j in range(1, 9999): #to my test but more memory-friendly.
total += (i / j)
print total
Run Code Online (Sandbox Code Playgroud)
这段代码在我的电脑上占用了31.40秒.
此代码的Java版本在同一台计算机上占用1秒或更短时间.我想,类型检查是这段代码的主要问题.但我应该为我的项目做很多这样的操作,我认为9999*9999不是那么大的数字.
我想我犯了错误,因为我知道Python被很多科学项目所使用.但是为什么这段代码这么慢,我怎么能处理比这更大的问题呢?
我应该使用JIT编译器Psyco吗?
我还说这个循环问题只是一个例子.代码并不像这样简单,可能很难将改进/代码示例付诸实践.
另一个问题是,我可以实现大量的数据挖掘和机器学习算法与numpy和scipy,如果我正确地使用它?
也许我犯了一个错误.如果是这样,我很抱歉问这个.
我想通过使用scipy的函数来计算Pearson的相关系数pearsonr.
from scipy.stats.stats import pearsonr
X = [4, 4, 4, 4, 4, 4]
Y = [4, 5, 5, 4, 4, 4]
pearsonr(X, Y)
Run Code Online (Sandbox Code Playgroud)
我在下面收到错误
RuntimeWarning:double_scalars中遇到的值无效###
我得到错误的原因是E [X] = 4(X的例外值是4)
我在scpy.stats.stats.py中查看pearsonr函数的代码.pearsonr函数的某些部分如下.
mx = x.mean() # which is 4
my = y.mean() # not necessary
xm, ym = x-mx, y-my # xm = [0 0 0 0 0 0]
r_num = n*(np.add.reduce(xm*ym)) #r_num = 0, because xm*ym 1x6 Zero Vector.
r_den = n*np.sqrt(ss(xm)*ss(ym)) #r_den = 0
r = …Run Code Online (Sandbox Code Playgroud) 我有一个稀疏矩阵.我需要逐行对此矩阵进行排序并创建另一个[稀疏]矩阵.代码可以更好地解释它:
# for `rand` function, you need newer version of scipy.
from scipy.sparse import *
m = rand(6,6, density=0.6)
d = m.getrow(0)
print d
Run Code Online (Sandbox Code Playgroud)
(0, 5) 0.874881629788
(0, 4) 0.352559852239
(0, 2) 0.504791645463
(0, 1) 0.885898140175
Run Code Online (Sandbox Code Playgroud)
我有这个m矩阵.我想创建一个m的排序版本的新矩阵.新矩阵包含这样的第0行.
new_d = new_m.getrow(0)
print new_d
Run Code Online (Sandbox Code Playgroud)
(0, 1) 0.885898140175
(0, 5) 0.874881629788
(0, 2) 0.504791645463
(0, 4) 0.352559852239
Run Code Online (Sandbox Code Playgroud)
所以我可以获得哪个列更大等:
print new_d.indices
Run Code Online (Sandbox Code Playgroud)
array([1, 5, 2, 4])
Run Code Online (Sandbox Code Playgroud)
当然,每行应该如上所述独立排序.
我有一个解决这个问题的方法,但它并不优雅.
代码有点复杂,抱歉.请关注该parallel_p功能.虽然sign是一个元组,但Python抱怨道:
if sign in hashtable并给出一个TypeError.为什么sign一个numpy.ndarray,而不是一个元组?我把它创建为一个元组.
p_dist = dict()
def parallel_prog(hashtable):
def wrapper(func):
if parallel_programming:
@wraps(func)
def parallel_p(*args, **kwargs):
sign = tuple(args)
print type(sign)
if sign in hashtable:
r = hashtable[sign] # hit.
return r
r = func(*args, **kwargs)
hashtable[tuple(sign)] = r # register for future hits.
return r
return parallel_p
else:
return func
return wrapper
@parallel_prog(p_dist)
def euclidean(a, b, signature=None):
val = np.sqrt(np.add.reduce((a - b)**2))
return val
Run Code Online (Sandbox Code Playgroud)
class …Run Code Online (Sandbox Code Playgroud) 我有一个很大的稀疏矩阵.我想采取log4稀疏矩阵中的所有元素.
我尝试使用,numpy.log()但它不适用于矩阵.
我也可以逐行取对数.然后我用一个新的粉碎旧行.
# Assume A is a sparse matrix (Linked List Format) with float values as data
# It is only for one row
import numpy as np
c = np.log(A.getrow(0)) / numpy.log(4)
A[0, :] = c
Run Code Online (Sandbox Code Playgroud)
这并不像我预期的那么快.有更快的方法吗?
python ×6
scipy ×3
correlation ×1
hashable ×1
jit ×1
matplotlib ×1
matrix ×1
numpy ×1
performance ×1
sorting ×1
tech-chat-ml ×1
typeerror ×1