小编Jos*_*del的帖子

84
推荐指数
4
解决办法
22万
查看次数

使用h5py在Python中对大数据进行分析工作的经验?

我做了很多统计工作,并使用Python作为我的主要语言.我使用的一些数据集虽然可以占用20GB的内存,但这使得使用numpy,scipy和PyIMSL中的内存函数对它们进行操作几乎是不可能的.统计分析语言SAS在这里具有很大的优势,因为它可以对来自硬盘的数据进行操作而不是严格的内存处理.但是,我想避免在SAS中编写大量代码(出于各种原因),因此我试图确定我使用Python的选项(除了购买更多的硬件和内存).

我应该澄清一下像map-reduce这样的方法对我的大部分工作都无济于事,因为我需要对完整的数据集进行操作(例如计算分位数或拟合逻辑回归模型).

最近我开始玩h5py并认为这是我发现允许Python像SAS一样操作磁盘上的数据(通过hdf5文件),同时仍然能够利用numpy/scipy/matplotlib等的最佳选择.我想听听是否有人在类似设置中使用Python和h5py以及他们发现了什么.有没有人能够在迄今为止由SAS主导的"大数据"设置中使用Python?

编辑:购买更多硬件/内存当然可以提供帮助,但从IT角度来看,当Python(或R或MATLAB等)需要在内存中保存数据时,我很难将Python出售给需要分析大量数据集的组织.SAS继续在这里有一个强大的卖点,因为虽然基于磁盘的分析可能会更慢,但您可以放心地处理大量数据集.因此,我希望Stackoverflow可以帮助我弄清楚如何降低使用Python作为主流大数据分析语言的感知风险.

python sas hdf5 scipy h5py

46
推荐指数
2
解决办法
8308
查看次数

在python多处理池中获取worker的唯一ID

有没有办法为python多处理池中的每个worker分配一个唯一的ID,使得池中特定worker正在运行的作业可以知道哪个worker正在运行它?根据文档,a Process有一个name但是

该名称是一个字符串,仅用于识别目的.它没有语义.可以为多个进程指定相同的名称.

对于我的特定用例,我想在一组四个GPU上运行一堆作业,并且需要设置作业应该运行的GPU的设备编号.因为作业的长度不均匀,我想确保在上一个作业完成之前尝试在其上运行的作业的GPU上没有发生冲突(因此这不能预先为ID分配ID提前工作单位).

python multiprocessing

41
推荐指数
2
解决办法
4万
查看次数

将带有字符串的结构化numpy数组传递给cython函数

我试图在cython中创建一个函数,通过定义一个cython结构类型接受一个numpy结构化数组或记录数组.假设我有数据:

a = np.recarray(3, dtype=[('a', np.float32),  ('b', np.int32), ('c', '|S5'), ('d', '|S3')])
a[0] = (1.1, 1, 'this\0', 'to\0')
a[1] = (2.1, 2, 'that\0', 'ta\0')
a[2] = (3.1, 3, 'dogs\0', 'ot\0')
Run Code Online (Sandbox Code Playgroud)

(注意:无论是否使用null终止符,都会出现下面描述的问题)

然后我有cython代码:

import numpy as np
cimport numpy as np

cdef packed struct tstruct:
    np.float32_t a
    np.int32_t b
    char[5] c
    char[3] d

def test_struct(tstruct[:] x):
    cdef:
        int k
        tstruct y

    for k in xrange(3):
        y = x[k]
        print y.a, y.b, y.c, y.d
Run Code Online (Sandbox Code Playgroud)

当我尝试运行时test_struct(a),我收到错误:

ValueError: Expected a dimension of …
Run Code Online (Sandbox Code Playgroud)

python string numpy cython recarray

29
推荐指数
1
解决办法
1971
查看次数

N点与numpy/scipy中的参考之间的有效距离计算

我刚开始使用scipy/numpy.我有一个100000*3阵列,每行是一个坐标,一个1*3中心点.我想计算数组中每行到中心的距离,并将它们存储在另一个数组中.最有效的方法是什么?

python arrays numpy scipy

20
推荐指数
2
解决办法
3万
查看次数

Python拆分列表基于序列中缺少的数字

我正在寻找最基本的方法,根据序列中缺少的数字将数字列表拆分成较小的列表.例如,如果初始列表是:

seq1 = [1, 2, 3, 4, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

该函数将产生:

[[1, 2, 3, 4], [6, 7, 8, 9, 10]]
Run Code Online (Sandbox Code Playgroud)

要么

seq2 = [1, 2, 4, 5, 6, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

会导致:

[[1, 2], [4, 5, 6], [8, 9, 10]]
Run Code Online (Sandbox Code Playgroud)

python list sequence

19
推荐指数
3
解决办法
6362
查看次数

将Numpy数组传递给用Cython包装的C代码

我有一小部分现有的C代码,我想用Cython包装.我希望能够设置一些numpy数组,然后将这些数组作为参数传递给C代码,其代码的函数采用标准的c数组(1d和2d).在弄清楚如何编写正确的.pyx代码以正确处理事情方面,我有点陷入困境.

有一些函数,但文件funcs.h中的典型函数类似于:

double InnerProduct(double *A, double **coords1, double **coords2, const int len)
Run Code Online (Sandbox Code Playgroud)

然后我有一个.pyx文件,其中包含相应的行:

cdef extern from "funcs.h":
    double InnerProduct(double *A, double **coords1, double **coords2, int len)
Run Code Online (Sandbox Code Playgroud)

我摆脱了const,因为cython不支持它.我陷入困境的是包装器代码应该看起来像是将MxN numpy数组传递给**coords1和**coords2参数.

我一直在努力为这类问题找到正确的文档或教程.任何建议都将非常感激.

arrays numpy cython

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

15
推荐指数
2
解决办法
7845
查看次数

如何使用python关闭程序?

有没有办法python可以关闭Windows应用程序?我知道如何启动应用程序,但现在我需要知道如何关闭它.

python

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

按组规范化DataFrame

假设我有一些数据生成如下:

N = 20
m = 3
data = np.random.normal(size=(N,m)) + np.random.normal(size=(N,m))**3
Run Code Online (Sandbox Code Playgroud)

然后我创建一些分类变量:

indx = np.random.randint(0,3,size=N).astype(np.int32)
Run Code Online (Sandbox Code Playgroud)

并生成一个DataFrame:

import pandas as pd
df = pd.DataFrame(np.hstack((data, indx[:,None])), 
             columns=['a%s' % k for k in range(m)] + [ 'indx'])
Run Code Online (Sandbox Code Playgroud)

我可以得到每组的平均值:

df.groubpy('indx').mean()
Run Code Online (Sandbox Code Playgroud)

我不确定如何做的是然后减去原始数据中每列的每个组的平均值,以便每个列中的数据通过组内的平均值进行标准化.任何建议,将不胜感激.

python pandas

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

标签 统计

python ×9

numpy ×3

arrays ×2

cython ×2

scipy ×2

h5py ×1

hdf5 ×1

list ×1

matplotlib ×1

multiprocessing ×1

pandas ×1

recarray ×1

runtime ×1

sas ×1

sequence ×1

string ×1

time ×1