V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
Sequencer
V2EX  ›  Python

如何在 numpy 里面自定义 array 元素的数据类型

  •  
  •   Sequencer · Sep 28, 2015 · 3860 views
    This topic created in 3868 days ago, the information mentioned may be changed or developed.
    我需要把一堆点阵放入一个 array 里面,然后点阵信息有坐标(User.SomeClass)和强度(np.complex),就是坐标的结构我是用 class 定义在 User 文件里面的,然而还是会给我返回
    TypeError: data type not understood
    难道是 python 用另外的东西来定义数据结构?
    18 replies    2015-09-29 23:19:17 +08:00
    luoluoluo
        1
    luoluoluo  
       Sep 28, 2015
    代码贴出来,或者 go SO. http://stackoverflow.com/questions/ask
    facat
        2
    facat  
       Sep 28, 2015 via Android
    array 不能用任意类型做数组元素
    Sequencer
        3
    Sequencer  
    OP
       Sep 28, 2015
    @facat 谢了,那有啥替代方案了?
    @luoluoluo 就是因为这个原因代码写的卡在一半的地方,大致就是我上面描述的意思
    deanguqiang
        4
    deanguqiang  
       Sep 28, 2015
    用二维 array 代替?
    zhuangzhuang1988
        5
    zhuangzhuang1988  
       Sep 28, 2015
    Sequencer
        6
    Sequencer  
    OP
       Sep 28, 2015
    @zhuangzhuang1988 嗯嗯,理解了。谢谢
    @deanguqiang 谢谢,已经用序列化的方式解决了!
    BooksE
        7
    BooksE  
       Sep 28, 2015
    任意元素的话,matlab 里面 cell 可以满足你.
    Sequencer
        8
    Sequencer  
    OP
       Sep 28, 2015 via iPhone
    @BooksE 正是因为 matlab 效率太低了才转 py 的😂
    facat
        9
    facat  
       Sep 28, 2015
    @Sequencer 为什么要在 array 中加入自己定义的元素,你需要进行哪些矩阵操作?还有, matlab 计算效率比 python 高很多,你认为 matlab 效率在哪方面效率低?
    sivacohan
        10
    sivacohan  
    PRO
       Sep 28, 2015 via Android
    pytable
    h5py
    benatsh
        11
    benatsh  
       Sep 28, 2015
    可以利用 Dtypes 解决你的问题
    BooksE
        12
    BooksE  
       Sep 29, 2015
    @Sequencer 嗯...那倒是
    @facat Matlab 读大文件效率低,然后循环是一生的痛.
    Sequencer
        13
    Sequencer  
    OP
       Sep 29, 2015
    @facat 光线追踪算法 二叉树 每道光 30s 上千束光加上镜子多了就可以边睡觉边听风扇吹了
    facat
        14
    facat  
       Sep 29, 2015 via Android
    @Sequencer 实际上就算 numpy 的 array 支持你的自定义数据类型,进行矩阵运算前你还得为你定义的类型重载运算符,太不方便。
    facat
        15
    facat  
       Sep 29, 2015 via Android
    @BooksE matlab 新版本对循环做了优化,不会慢。最重要的是, matlab 得优势在于向量计算。你把循环优化成向量计算的形式就回发现计算效率很高。
    Sequencer
        16
    Sequencer  
    OP
       Sep 29, 2015
    @facat 现在程序的瓶颈在于追光的效率问题,每经过一个 lens 就要计算投射反射,计算之后就是两束光,然后对两束光分别追,这样的就只有一个二叉树下来,所以程序就很慢了。
    因为做科研,不是学专业计算机的,所以算法之类的都是自己想的,也不知道怎么优化
    BooksE
        17
    BooksE  
       Sep 29, 2015
    @facat 哪个版本对循环做了优化?我用的 2014b 循环性能还是很差.而且有些操作根本就向量化不了啊.
    facat
        18
    facat  
       Sep 29, 2015
    @BooksE 我用 2014a 就觉得循环已经很快了。可能你的问题与循环无关。其实 python 的科学计算效率并不高,调试不如 matlab 方便,除非工程应用不建议用于数值计算。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1019 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 18:05 · PVG 02:05 · LAX 11:05 · JFK 14:05
    ♥ Do have faith in what you're doing.