小编Ohm*_*Ohm的帖子

在 Python 中将 LaTex 表读入数组

对于Python初学者来说,我有一个艰巨的任务,我需要从用LaTex编写的源文件导入一个表。我想我会使用表的名称作为标识符,然后从表的开头到结尾逐行写入数组。完成这项工作的“自然”方式是什么?

python import latex file

5
推荐指数
1
解决办法
2706
查看次数

如何使用 python netCDF4 创建 netCDF 文件?

我正在学习如何使用 Anaconda 中的 Python 模块来使用 netCDF4。我正在尝试将值附加到我创建的两个变量timefield

from netCDF4 import Dataset
import numpy as np

root_grp = Dataset('py_netcdf4.nc', 'w', format='NETCDF4')
root_grp.description = 'Example simulation data'

ndim = 128 # Size of the matrix ndim*ndim
xdimension = 0.75
ydimension = 0.75
# dimensions
root_grp.createDimension('time', None)
root_grp.createDimension('x', ndim)
root_grp.createDimension('y', ndim)

# variables
time = root_grp.createVariable('time', 'f8', ('time',))
x = root_grp.createVariable('x', 'f4', ('x',))
y = root_grp.createVariable('y', 'f4', ('y',))
field = root_grp.createVariable('field', 'f8', ('time', 'x', 'y',))

# data
x_range =  np.linspace(0, …
Run Code Online (Sandbox Code Playgroud)

python numpy netcdf

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

Numpy方法为绘图排序一个凌乱的数组

我有两个数组的绘图数据以未分类的方式存储,因此绘图不连续地从一个地方跳到另一个地方: 在此输入图像描述 我试过一个在2D数组中找到最近点的例子:

import numpy as np

def distance(pt_1, pt_2):
    pt_1 = np.array((pt_1[0], pt_1[1]))
    pt_2 = np.array((pt_2[0], pt_2[1]))
    return np.linalg.norm(pt_1-pt_2)

def closest_node(node, nodes):
    nodes = np.asarray(nodes)
    dist_2 = np.sum((nodes - node)**2, axis=1)
    return np.argmin(dist_2)

a = []
for x in range(50000):
    a.append((np.random.randint(0,1000),np.random.randint(0,1000)))
some_pt = (1, 2)

closest_node(some_pt, a)
Run Code Online (Sandbox Code Playgroud)

我能以某种方式使用它来"清理"我的数据吗?(在上面的代码中,a可以是我的数据)

我计算的示例数据是:

array([[  2.08937872e+001,   1.99020033e+001,   2.28260611e+001,
          6.27711094e+000,   3.30392288e+000,   1.30312878e+001,
          8.80768833e+000,   1.31238275e+001,   1.57400130e+001,
          5.00278061e+000,   1.70752624e+001,   1.79131456e+001,
          1.50746185e+001,   2.50095731e+001,   2.15895974e+001,
          1.23237801e+001,   1.14860312e+001,   1.44268222e+001,
          6.37680265e+000,   7.81485403e+000],
       [ -1.19702178e-001,  -1.14050879e-001,  -1.29711421e-001,
          8.32977493e-001,   7.27437322e-001, …
Run Code Online (Sandbox Code Playgroud)

python arrays sorting numpy matplotlib

5
推荐指数
1
解决办法
930
查看次数

matplotlib.widgets 按钮在类中不起作用

我以滑块小部件为例,并尝试将其插入到一个类中。滑块可以正常工作,但由于某种原因,当该方法位于类中时,Button 和 RadioButtons 没有反应:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
class test(object):
    def __init__(self):

        fig, ax = plt.subplots()
        plt.subplots_adjust(left=0.25, bottom=0.25)
        t = np.arange(0.0, 1.0, 0.001)
        a0 = 5
        f0 = 3
        s = a0*np.sin(2*np.pi*f0*t)
        l, = plt.plot(t, s, lw=2, color='red')
        plt.axis([0, 1, -10, 10])

        axcolor = 'lightgoldenrodyellow'
        axfreq = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor=axcolor)
        axamp = plt.axes([0.25, 0.15, 0.65, 0.03], facecolor=axcolor)

        sfreq = Slider(axfreq, 'Freq', 0.1, 30.0, valinit=f0)
        samp = …
Run Code Online (Sandbox Code Playgroud)

python widget slider matplotlib

4
推荐指数
1
解决办法
1134
查看次数

创建具有重复模式的 numpy 数组

我正在尝试创建一个大小为 6*n 的数组,这样对于数组中每批 6 个单元格,我将具有以下整数值:

a = [n-2, n-1,n,n,n+1,n+1,n+2,n+3]
Run Code Online (Sandbox Code Playgroud)

我能想到的平庸的方法是使用这个例程:

a = []
for i in xrange(n):
    np.append(a,[n-2, n-1,n,n,n+1,n+1,n+2,n+3])
Run Code Online (Sandbox Code Playgroud)

但有没有一种更智能、更快速的方法呢?

python arrays numpy python-2.7

3
推荐指数
1
解决办法
4472
查看次数

Numpy - 删除负值的数据行

我正在从AUTO数字延续包中获取输出,并且需要过滤掉具有负值变量的结果,因为它们是非物理的.所以,如果我有,例如:

>>>   a = np.array([[0,1,2,3,4],[-1,-0.5,0,0.5,1],[-3,-4,-5,0.1,0.2]])
Run Code Online (Sandbox Code Playgroud)

我想留下:

>>> b
array([[ 3. ,  4. ],
       [ 0.5,  1. ],
       [ 0.1,  0.2]])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,numpy.where我得到:

>>> b = a[:,(np.where(a[1]>=0) and np.where(a[2]>=0))]
>>> b
array([[[ 3. ,  4. ]],

       [[ 0.5,  1. ]],

       [[ 0.1,  0.2]]])
>>> b.shape
(3, 1, 2)
Run Code Online (Sandbox Code Playgroud)

也就是说,它会向阵列添加另一个不需要的轴.我究竟做错了什么?

python numpy

3
推荐指数
1
解决办法
2772
查看次数

将顶点属性添加到python中的加权igraph图

我正在学习python-igraph,并且难以处理分为组件(在它们之间没有连接)的图。当我在该图上应用一种聚类算法时,它似乎无法正常工作,因此我需要将算法分别应用于每个子图(组件)。因此,为了保持顶点的标识,我想添加一个顶点属性,该属性在原始图中为我提供ID号。我的图是根据加权邻接矩阵构造的:

import numpy as np
import igraph

def symmetrize(a):
    return a + a.T - 2*np.diag(a.diagonal())

A = symmetrize(np.random.random((100,100)))

G = igraph.Graph.Adjacency(A.tolist(),attr="weight",mode="UPPER")
Run Code Online (Sandbox Code Playgroud)

我看到应该有一种添加顶点属性的方法,但是我不知道如何使用它。

python graph igraph

3
推荐指数
1
解决办法
1807
查看次数

使用 Numba 更快地制作四个嵌套 for 循环

我对 Numba 的工作有点陌生,但我已经了解了它的要点。我想知道是否有更高级的技巧可以使四个嵌套for循环比我现在的速度更快。特别是,我需要计算以下积分:

在此输入图像描述

其中B是二维数组,S0和E是某些参数。我的代码如下:

import numpy as np
from numba import njit, double

def calc_gb_gauss_2d(b,s0,e,dx):
    n,m=b.shape
    norm = 1.0/(2*np.pi*s0**2)
    gb = np.zeros((n,m))
    for i in range(n):
        for j in range(m):
            for ii in range(n):
                for jj in range(m):
                    gb[i,j]+=np.exp(-(((i-ii)*dx)**2+((j-jj)*dx)**2)/(2.0*(s0*(1.0+e*b[i,j]))**2))
            gb[i,j]*=norm
    return gb

calc_gb_gauss_2d_nb = njit(double[:, :](double[:, :],double,double,double))(calc_gb_gauss_2d)
Run Code Online (Sandbox Code Playgroud)

对于大小为输入的数组,256x256计算速度为:

In [4]: a=random.random((256,256))

In [5]: %timeit calc_gb_gauss_2d_nb(a,0.1,1.0,0.5)
The slowest run took 8.46 times longer than the fastest. This could mean that an intermediate result is being cached.
1 …
Run Code Online (Sandbox Code Playgroud)

python iteration jit loops numba

3
推荐指数
1
解决办法
3451
查看次数

从 numpy 求和二维数组创建加权 igraph 图作为邻接矩阵

我有一个numpy二维数组,其值代表节点之间的边的权重。该矩阵是对称的,我取对角线为零。我没有找到如何将此矩阵转换为 igraph 图形对象的示例。我尝试过以下方法,但它不起作用:

import numpy as np
import igraph

def symmetrize(a):
    return a + a.T - 2*np.diag(a.diagonal())

A = symmetrize(np.random.random((100,100)))

G = igraph.Graph.Adjacency(A.tolist())
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matrix igraph

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

从sympy.core.add.Add转换为numpy复数

我有Sympy解算器的这个解决方案列表:

In [49]: sol
Out[49]: 
[-1.20258344291917 - 0.e-23*I,
 -0.835217129314554 + 0.e-23*I,
 0.497800572233726 - 0.e-21*I]

In [50]: type(sol)
Out[50]: list

In [51]: type(sol[0])
Out[51]: sympy.core.add.Add
Run Code Online (Sandbox Code Playgroud)

如何将此列表转换为具有正常复杂值的单元格的numpy对象?

python numpy sympy

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

标签 统计

python ×10

numpy ×6

arrays ×3

igraph ×2

matplotlib ×2

file ×1

graph ×1

import ×1

iteration ×1

jit ×1

latex ×1

loops ×1

matrix ×1

netcdf ×1

numba ×1

python-2.7 ×1

slider ×1

sorting ×1

sympy ×1

widget ×1