我正在使用Python与numpy,scipy和scikit-learn模块.
我想用非常大的稀疏矩阵对数组进行分类.(100,000*100,000)
矩阵中的值等于0或1.我唯一拥有的是value = 1的索引.
a = [1,3,5,7,9]
b = [2,4,6,8,10]
Run Code Online (Sandbox Code Playgroud)
意思是
a = [0,1,0,1,0,1,0,1,0,1,0]
b = [0,0,1,0,1,0,1,0,1,0,1]
Run Code Online (Sandbox Code Playgroud)
如何在scipy中将索引数组更改为稀疏数组?
如何快速对这些阵列进行分类?
非常感谢你.
我有两个数组看起来像这样:
20131010 123 12321 12312312
20131011 123 12321 12312312
20131012 123 12321 12312312
20131013 123 12321 12312312
Run Code Online (Sandbox Code Playgroud)
20131010 bbbb sad sadsad
20131011 asd asdd asdad
20231012 123 12321 12312312
20141013 123 12321 12312312
20141023 123 12321 12312312
Run Code Online (Sandbox Code Playgroud)
现在我需要在第一列(日期)内连接这两个数组,结果应如下所示:
20131010 123 12321 12312312 bbbb sad sadsad
20131011 123 12321 12312312 asd asdd asdad
Run Code Online (Sandbox Code Playgroud)
我怎么做到的?请注意,每个列都有很多列,所以我不能命名每一列,但比较列确实只有一列.
我有以下表达式:
from sympy import pi, sin, cos, var, simplify
var('j,u,v,w,vt,wt,a2,t,phi')
u0 = v*a2*sin(pi*j/2 + pi*j*t*phi**(-1)/2) + pi*vt*a2*cos(pi*j/2 + pi*j*t*phi**(-1)/2)*j*phi**(-1)/2 + pi*w*a2*cos(pi*j/2 + pi*j*t*phi**(-1)/2)*j*phi**(-1)
Run Code Online (Sandbox Code Playgroud)
哪个可以简化:
print simplify(u0)
#a2*(pi*j*vt*cos(pi*j*(phi + t)/(2*phi)) + 2*pi*j*w*cos(pi*j*(phi + t)/(2*phi)) + 2*phi*v*sin(pi*j*(phi + t)/(2*phi)))/(2*phi)
Run Code Online (Sandbox Code Playgroud)
给出子表达式:
bj = pi*j*(phi + t)/(2*phi)
cj = j*pi/(2*phi)
Run Code Online (Sandbox Code Playgroud)
目前我手动替换bj并cj在简化u0表达式中获取:
u0 = a2*(v*sin(bj) + cj*vt*cos(bj) + 2*cj*w*cos(bj))
Run Code Online (Sandbox Code Playgroud)
是否可以使用SymPy来实现这一点,避免手动替换?
python symbolic-math sympy substitution symbolic-computation
我不熟悉Python的一些基本知识matplotlib.pyplot.我的问题是如何绘制一些更高次多项式?我看到的一种方法是用x表示y,然后绘制值.但我有两个困难:
我试图绘制的多项式是:
c0 + c1*x + c2*y +c3*x*x + c4*x*y + c5*y*y + c6*x**3 + c7*x**2*y + ..... c26*x*y**5 + c27*y**6
Run Code Online (Sandbox Code Playgroud)
所有的系数c0来c27是已知的.如何绘制此曲线?
您还可以向我推荐一些资源,我可以从中学习Python中的绘图和可视化吗?
澄清: 对不起每个人都说不够清楚.它不是表面的方程(涉及3个变量:x,y和z).我应该在最后加零:c0 + c1*x + c2*y + c3*x*x + c4*x*y + c5*y*y + c6*x**3 + c7*x**2*y + ..... c26*x*y**5 + c27*y**6 = 0
我有一个三列(x像素,y像素,z值)数据,有一百万行.数据来自图像,并且存在重复的z值.现在我需要制作表面图.这个图像是一个很好的例子.但现在输出图像为空.有人可以查一下代码吗?
import numpy as np
from enthought.mayavi import mlab
from scipy.interpolate import griddata
x,y,z = np.loadtxt('test.csv',delimiter=',',usecols=(0,1,2),unpack=True)
xi,yi = np.mgrid[0:3000:3000j, 0:3000:3000j]
zi = griddata((x, y), z, (xi, yi),method='linear')
mlab.surf(xi,yi,zi)
mlab.show()
Run Code Online (Sandbox Code Playgroud) 我是否可以使用来自线程模块的Event对象,不仅可以通知某些事件已发生,还可以提供此事件的一些参数,例如:
e = Event()
...
e.param = "this is event data"
e.set()
Run Code Online (Sandbox Code Playgroud)
另一个线程:
e.wait()
data = e.param
Run Code Online (Sandbox Code Playgroud)
乍一看似乎没问题,但有什么问题可以发生吗?安全吗?如果没有,还有什么方法可以更好地在线程之间传递一些事件参数?
感谢名单.
我通常会去
http://docs.scipy.org
Run Code Online (Sandbox Code Playgroud)
获取此信息,但他们的网站由于某种原因关闭了:/
但是我如何才能填充 numpy 矩阵中的整列呢?
a = numpy.zeros(shape=(100,10))
a[0] = [1,2,3,4,5,6,7,8,9,0]
Run Code Online (Sandbox Code Playgroud)
填满一行,但是如何填满一列呢?
我有一个 3D numpy 数组。我想通过在沿轴的连续 2d 切片上执行函数并将生成的切片堆叠在一起来形成一个新的 3d 数组。显然,有很多方法可以做到这一点;我想以最简洁的方式做到这一点。我认为这是可能的numpy.vectorize,但这似乎产生了一个迭代数组中每个值的函数,而不是沿第一个轴移动的二维切片。
基本上,我想要看起来像这样的代码:
new3dmat = np.vectorize(func2dmat)(my3dmat)
Run Code Online (Sandbox Code Playgroud)
并完成与此相同的事情:
new3dmat = np.empty_like(my3dmat)
for i in range(my3dmat.shape[0]):
new3dmat[i] = func2dmat(my3dmat[i])
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想scipy.sparse.csr_matrix用一些方法来增加课程,并替换其他一些用于个人用途.我正在创建一个继承自的子类csr_matrix,如下:
class SparseMatrix(sp.csr_matrix):
def __init__(self, matrix):
super(type(self), self).__init__(matrix)
Run Code Online (Sandbox Code Playgroud)
这不会起作用,抛出:
AttributeError:找不到toSpa
你能告诉我我做错了什么吗?
我给出了两个不同的numpy数组.第一个是二维数组,看起来像(前十点):
[[ 0. 0. ]
[ 12.54901961 18.03921569]
[ 13.7254902 17.64705882]
[ 14.11764706 17.25490196]
[ 14.90196078 17.25490196]
[ 14.50980392 17.64705882]
[ 14.11764706 17.64705882]
[ 14.50980392 17.25490196]
[ 17.64705882 18.03921569]
[ 21.17647059 34.11764706]]
Run Code Online (Sandbox Code Playgroud)
第二个数组只是一维的,看起来像(前十点):
[ 18.03921569 17.64705882 17.25490196 17.25490196 17.64705882
17.64705882 17.25490196 17.64705882 21.17647059 22.35294118]
Run Code Online (Sandbox Code Playgroud)
第二个(一维)数组中的值可能出现在第一列中的第一个(二维)数组中.Fe 17.64705882
我想从二维数组中获取一个数组,其中第一列的值与第二个(一维)数组中的值匹配.怎么做?
python ×10
numpy ×7
arrays ×4
scipy ×3
axis ×1
curve ×1
intersection ×1
matplotlib ×1
mayavi ×1
subclass ×1
substitution ×1
sympy ×1