有没有比 pandas, numpy 轻量的二维数组模块 - V2EX
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
imn1

有没有比 pandas, numpy 轻量的二维数组模块

  •  
  •   imn1 Sep 28, 2020 2866 views
    This topic created in 2052 days ago, the information mentioned may be changed or developed.
    常用二维数组,有时按行读,有时按列读
    类似 pandas.DataFrame.loc/iloc/at

    单元不多,几十到几百,计算也不多,有时只是读取 /更改而已
    如果用内置列表,切换行列方式读取,往往要 zip 一遍,或者另外保存一份旋转(行列交换)的数组
    pandas/numpy 感觉太重,没有什么计算的话,不想转到他们的格式,然后又转出来,直接用 dataframe 传参也是太重

    想找个轻量一点的模块记录二维数组,方便自由按行或按列读取
    namedtuple 格式本来也不错,问题它是 tuple,改变一个单元的值就要一次转换,也不适用 sort

    没有的话,打算自己写个类算了
    17 replies    2020-09-29 18:29:01 +08:00
    TimePPT
        1
    TimePPT  
    PRO
       Sep 28, 2020   1
    如果考量计算效率的话,numpy 在 python 里是王者了
    wuwukai007
        2
    wuwukai007  
       Sep 28, 2020 via Android   1
    是要打包吗,考虑大小
    imn1
        3
    imn1  
    OP
       Sep 28, 2020
    @wuwukai007 #2
    首先,暂不考虑不打包
    其次,如果计算部分不多的,这个模块也不会太巨型吧?
    shm7
        4
    shm7  
       Sep 28, 2020   1
    @TimePPT 可能 lz 没法理解 numpy 为什么高效的原因。
    wuwukai007
        5
    wuwukai007  
       Sep 28, 2020 via Android   1
    不打包就装一个吗,难道公司内网没有 pip 源不好装?
    imn1
        6
    imn1  
    OP
       Sep 28, 2020
    @wuwukai007 #4
    那我没理解对你说的话
    我以为你说项目最后要打包给别人用

    @shm7
    @TimePPT
    Numpy 我知道,常用来计算证券,和商业数据分析
    只是有些场合,计算很少的,提取数据的情况多
    举个例子
    有个二维数组,要提取某一列 1/3/5/7 的数据,如果 pandas/numpy 很简单;如果只是 list,要么写个表达式,要么 zip 一次,取出这列再提取
    这个二维数组到其他地方提取方式可能不同,所以要原样传递
    这些场合后续计算很少,部分只是提取完就 print 了,没有计算,所以不想每个 py 都 import 一把牛刀,或者把 dataframe 作为参数传递,希望中间过程轻量一点,只是处理杀鸡这点小事而已

    这只是个例子,还有很多类似场景
    我问问有没有我不知道的模块可以做这事,没有的话,我自己弄个类,搞几个闭包写成方法,就不用各个场景都多写一两句 zip/for 这样的重复劳动了
    shm7
        7
    shm7  
       Sep 28, 2020 via iPhone   1
    @imn1 我还是用的太少了,只有 3 年,不太明白 numpy 被称为重的地方在哪。也不理解 2 维数组取 1357 有啥麻烦。
    iConnect
        8
    iConnect  
       Sep 28, 2020 via Android   2
    少了 numpy,py 也到不了今天的地位。不要嫌弃 numpy,这是顶梁柱
    imn1
        9
    imn1  
    OP
       Sep 28, 2020
    @shm7 #7
    不难,也不麻烦,能写
    例如
    a=pandas.DataFrame([[1,1],[1,3],[1,5],[1,7],[1,9]])
    a.iloc[[1,3],1]=[2,4]

    pandas 这句赋值盲写就行,二维 list 就要稍微转一下脑子
    我只是希望无脑套用 [1,3],1,懒得想表达式怎么写,如果场景多就每个表达式都要多想一点点,写成闭包以后就可以盲写了

    @iConnect #8
    不嫌弃,离开 numpy 我恐怕生计都成问题
    只是有些场合,象上面这句 a.iloc,可能整个 py 数百行,只有这两行用到 pandas,为了这个赋值不值得,我宁愿多写一两行省下这个 import 的时间和内存
    还是那句,如果有轻便的我试试,没有我就另想办法
    TimePPT
        10
    TimePPT  
    PRO
       Sep 28, 2020 via Android   1
    @imn1 了解你的出发点了,确实如果仅仅是有限操作的话用 numpy 有点儿大炮轰蚊子了。
    minami
        11
    minami  
       Sep 28, 2020   1
    搜了一下,这个仓库可能满足你的需求,纯 python 实现的 ndarray:wadetb/tinynumpy
    crclz
        12
    crclz  
       Sep 28, 2020   2
    洁癖
    Huelse
        13
    Huelse  
       Sep 28, 2020   1
    或者自己用 C 写然后打包成动态库,完全自定义,当然要小心内存问题
    neoblackcap
        14
    neoblackcap  
       Sep 28, 2020   1
    numpy 在实际会用到 blas 的相关实现。很多时候哪怕你认为是读取的操作,实际上可能是当矩阵变换的操作。会有对应的加速的。一般人写不出那样高效的代码。如果你觉得效率没啥所谓,其实自己用 C 写一个也可以。关键还是看你实际的需求
    krixaar
        15
    krixaar  
       Sep 29, 2020   1
    @imn1 #6 > 有个二维数组,要提取某一列 1/3/5/7 的数据
    换个思路,“有张数据库表,要提取某一字段 1/3/5/7 行的数据”

    > 不想每个 py 都 import 一把牛刀,或者把 dataframe 作为参数传递,希望中间过程轻量一点
    参数只传一个表名够轻量吗

    > 想找个轻量一点的模块
    标准库 import sqlite3,都不用安装了

    Let's CRUD
    imn1
        16
    imn1  
    OP
       Sep 29, 2020
    @krixaar #15
    内存表?
    打开新思路,谢谢
    FurN1
        17
    FurN1  
       Sep 29, 2020 via iPhone
    pandas 基于 numpy

    numpy 的 array 都是数字,而且在内存里连续占用。这两点要比 python 自己的 list 轻量多了。你试试看 size,比一比就知道了
    About     Help     Advertise     Blog     API     FAQ     Solana     3272 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 68ms UTC 14:12 PVG 22:12 LAX 07:12 JFK 10:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86