gpt4 book ai didi

python - 初始化与数组形状相同的空列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:49 25 4
gpt4 key购买 nike

假设我有一个形状数组:

import numpy as np
a = np.zeros(shape=(3, 4, 2))

看起来像:

print a

[[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]

[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]

[[ 0. 0.]
[ 0. 0.]
[ 0. 0.]
[ 0. 0.]]]

如何创建一个具有相同形状的空列表,其中每个 0. 元素都被一个空的子列表替换?

在上面显示的特定情况下,它看起来像:

[[[[], []]
[[], []]
[[], []]
[[], []]],
[[[], []]
[[], []]
[[], []]
[[], []]],
[[[], []]
[[], []]
[[], []]
[[], []]]]

但我需要一种适用于任何形状数组的通用方法。是否有内置函数可以执行此操作?

最佳答案

np.empty(shape=(3, 4, 2, 0)) 可能就是您要找的。或者更一般地说,np.empty(shape=your_shape+(0,)) 其中 your_shape 是一个像 (3, 4, 2) 这样的元组。

现在要得到想要的列表列表,可以调用tolist方法:

np.empty(shape=your_shape+(0,)).tolist()

否则,您可以执行一个返回嵌套列表理解的包装函数:

a = [[[[] for j in range(2)] for i in range(4)] for k in range(3)]

如果你想要一个 numpy 数组:

a = np.array(a)

这样的函数可以是:

import copy
def empty(shape):
if len(shape) == 1:
return [[] for i in range(shape[0])]
items = shape[0]
newshape = shape[1:]
sublist = empty(newshape)
return [copy.deepcopy(sublist) for i in range(items)]

你会这样调用它:

a = empty([3,4,2])

关于python - 初始化与数组形状相同的空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289615/

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