gpt4 book ai didi

python - 将 3D 列表转换为 3D NumPy 数组

转载 作者:太空狗 更新时间:2023-10-30 02:02:35 28 4
gpt4 key购买 nike

目前,我有一个锯齿状数组格式的 3D Python 列表。
A = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0], [0], [0]]]

有什么方法可以将此列表转换为 NumPy 数组,以便使用某些 NumPy 数组运算符,例如向每个元素添加一个数字。
A + 4 会得到 [[[4, 4, 4], [4, 4, 4], [4, 4, 4]], [[4], [4] , [4]]].

分配 B = numpy.array(A) 然后尝试 B + 4 会引发类型错误。
TypeError:只能将列表(不是“ float ”)连接到列表

是否可以在保留结构的同时从锯齿状 Python 列表转换为 NumPy 数组(我需要稍后将其转换回来),或者循环遍历数组并添加所需的更好的解决方案?

最佳答案

@SonderingNarcissit 和@MadPhysicist 的回答已经很不错了。

这是为列表中的每个元素添加数字并保持结构的快速方法。如果您不仅想添加一个数字,还想用它做其他事情,您可以用任何您喜欢的东西替换函数 return_number:

def return_number(my_number):
return my_number + 4

def add_number(my_list):

if isinstance(my_list, (int, float)):
return return_number(my_list)
else:
return [add_number(xi) for xi in my_list]

A = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0], [0], [0]]]

然后

print(add_number(A))

给你想要的输出:

[[[4, 4, 4], [4, 4, 4], [4, 4, 4]], [[4], [4], [4]]]

所以它所做的是递归地查看您的列表列表,并且每次找到一个数字它都会添加值 4;这应该适用于任意深度的嵌套列表。目前仅适用于数字和列表;如果你也有列表中还有字典,那么您将不得不添加另一个 if 子句。

关于python - 将 3D 列表转换为 3D NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40289943/

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