gpt4 book ai didi

python - 将python列表复制到numpy数组时,如何防止TypeError : list indices must be integers, not tuple?

转载 作者:IT老高 更新时间:2023-10-28 22:12:04 25 4
gpt4 key购买 nike

我正在尝试使用来自另一个名为 mean_data 的数组中的数据创建 3 个 numpy 数组/列表,如下所示:

---> 39 R = np.array(mean_data[:,0])
40 P = np.array(mean_data[:,1])
41 Z = np.array(mean_data[:,2])

当我尝试运行程序时出现错误:

TypeError: list indices must be integers, not tuple

mean_data 列表看起来像这个示例...

[6.0, 315.0, 4.8123788544375692e-06],
[6.5, 0.0, 2.259217450023793e-06],
[6.5, 45.0, 9.2823565008402673e-06],
[6.5, 90.0, 8.309270169336028e-06],
[6.5, 135.0, 6.4709418114245381e-05],
[6.5, 180.0, 1.7227922423558414e-05],
[6.5, 225.0, 1.2308522579848724e-05],
[6.5, 270.0, 2.6905672894824344e-05],
[6.5, 315.0, 2.2727114437176048e-05]]

我不知道如何防止此错误,我尝试将 mean_data 创建为 np.array 并使用 np.append 为其添加值,但这也不能解决问题。

这是回溯(之前使用的是 ipython)

Traceback (most recent call last):
File "polarplot.py", line 36, in <module>
R = np.array(mean_data[:,0])
TypeError: list indices must be integers, not tuple

我尝试创建数组的另一种方法是:

mean_data = np.array([])

for ur, ua in it.product(uradius, uangle):
samepoints = (data[:,0]==ur) & (data[:,1]==ua)
if samepoints.sum() > 1: # check if there is more than one match
np.append(mean_data[ur, ua, np.mean(data[samepoints,-1])])
elif samepoints.sum() == 1:
np.append(mean_data, [ur, ua, data[samepoints,-1]])

对此的追溯是:

IndexError                                Traceback (most recent call last)
<ipython-input-3-5268bc25e75e> in <module>()
31 samepoints = (data[:,0]==ur) & (data[:,1]==ua)
32 if samepoints.sum() > 1: # check if there is more than one match
---> 33 np.append(mean_data[ur, ua, np.mean(data[samepoints,-1])])
34 elif samepoints.sum() == 1:
35 np.append(mean_data, [ur, ua, data[samepoints,-1]])

IndexError: invalid index

最佳答案

变量mean_data是一个嵌套列表,在Python中访问嵌套列表不能通过多维切片来完成,即:mean_data[1,2],而是有人会写 mean_data[1][2].

这是因为mean_data[2] 是一个列表。进一步的索引是递归完成的 - 因为 mean_data[2] 是一个列表,mean_data[2][0] 是该列表的第一个索引。

另外,mean_data[:][0] 不起作用,因为 mean_data[:] 返回 mean_data

解决方法是替换数组,或者导入原始数据,如下:

mean_data = np.array(mean_data)

numpy 数组(类似于 MATLAB 数组,与嵌套列表不同)支持使用元组进行多维切片。

关于python - 将python列表复制到numpy数组时,如何防止TypeError : list indices must be integers, not tuple?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884527/

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