gpt4 book ai didi

在任意位置插入列的 Pythonic 方式

转载 作者:行者123 更新时间:2023-11-28 22:52:39 25 4
gpt4 key购买 nike

我有一个由行列表表示的数据网格:

tableData = [
[-27.37, 36.61 , 8.90 , -11.20, -36.03, -42.34],
[16.83 , -33.45, -5.15 , 12.90 , -48.60, -8.70],
[-19.73, 2.64 , 7.21 , 24.16 , 18.38 , 20.47],
[-31.05, 15.07 , 42.69 , -32.13, -36.02, 42.31],
[15.18 , 30.54 , -47.31, 48.38 , 31.60 , -1.98]
]

现在,我想插入包含 None 值的两列,例如在第 2&3 列和第 4&5 列之间,这样我就有以下内容:

tableDataWithNones = [
[-27.37, 36.61 , None, 8.90 , -11.20, None, -36.03, -42.34],
[16.83 , -33.45, None, -5.15 , 12.90 , None, -48.60, -8.70],
[-19.73, 2.64 , None, 7.21 , 24.16 , None, 18.38 , 20.47],
[-31.05, 15.07 , None, 42.69 , -32.13, None, -36.02, 42.31],
[15.18 , 30.54 , None, -47.31, 48.38 , None, 31.60 , -1.98]
]

我可以像这样用双 for 循环来完成它:

spacerPositions = [2, 4]
for i in tableData:
for j in reversed(spacerPositions):
i.insert(j, None)

但这感觉不像是 pythonic 的方式。

我想我可以使用 numpy 转置数据,这样列就可以变成行,然后我可以使用 insertNone 的行放入,然后转置数据回来。但是 insert 不能为索引取多个值,所以我仍然必须使用 for 循环。

我有什么想法可以更好地做到这一点吗?

最佳答案

使用 numpy.insert :

>>> import numpy as np
>>> arr = np.array(tableData)
>>> np.insert(arr, (2, 4), None, axis=1)
array([[-27.37, 36.61, nan, 8.9 , -11.2 , nan, -36.03, -42.34],
[ 16.83, -33.45, nan, -5.15, 12.9 , nan, -48.6 , -8.7 ],
[-19.73, 2.64, nan, 7.21, 24.16, nan, 18.38, 20.47],
[-31.05, 15.07, nan, 42.69, -32.13, nan, -36.02, 42.31],
[ 15.18, 30.54, nan, -47.31, 48.38, nan, 31.6 , -1.98]])

关于在任意位置插入列的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com