V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

Python 多维列表/数组问题请教

  •  
  •   zxCoder · 2021-12-25 22:15:09 +08:00 · 841 次点击
    这是一个创建于 866 天前的主题,其中的信息可能已经有所发展或是发生改变。

    python

    有一个多维列表,和一些下标的列表,比如[[0,0,1],[1,2,0],[0,1,3],...]

    维度不确定,想取出这个多维列表里对应这些下标的值,或者给这个多维列表对应下标赋值

    能做到吗

    4 条回复    2021-12-27 19:03:52 +08:00
    ruxuan1306
        1
    ruxuan1306  
       2021-12-25 23:06:59 +08:00
    如果维度规整,直接转成 numpy 数组下标操作即可。
    所谓规整,就是所有元素在某个维度不能参差不齐。
    zxCoder
        2
    zxCoder  
    OP
       2021-12-26 08:37:59 +08:00
    @ruxuan1306 在想有没有原生 python 的写法,暴力也行
    ruxuan1306
        3
    ruxuan1306  
       2021-12-27 19:01:02 +08:00
    ```Python
    import numpy as np

    nparr = np.arange(24).reshape(3,4,2)
    arr = nparr.tolist()

    print(nparr[0,2,1])
    nparr[0,2,1] = 100
    print(nparr)

    print(arr[0][2][1])
    arr[0][2][1] = 100
    print(arr)
    ```

    ```
    5
    [[[ 0 1]
    [ 2 3]
    [ 4 100]
    [ 6 7]]

    [[ 8 9]
    [ 10 11]
    [ 12 13]
    [ 14 15]]

    [[ 16 17]
    [ 18 19]
    [ 20 21]
    [ 22 23]]]
    5
    [[[0, 1], [2, 3], [4, 100], [6, 7]], [[8, 9], [10, 11], [12, 13], [14, 15]], [[16, 17], [18, 19], [20, 21], [22, 23]]]
    ```
    ruxuan1306
        4
    ruxuan1306  
       2021-12-27 19:03:52 +08:00
    可以用原生等价实现,只不过 numpy 的占内存更小。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5696 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:47 · PVG 16:47 · LAX 01:47 · JFK 04:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.