如何创建长度相同或不同的其他numpy数组的numpy对象数组?

2024-10-03 02:41:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个问题。所以让我们看看我能不能解释清楚我需要什么。你知道吗

我得到了一个pythonlist的numpy数组,它可以有或者不能有不同的长度(仅在一维中,但这在这里并不重要),例如

my_list = [
    np.ones((20, 3, 3)),
    np.ones(( 1, 3, 3)),
    np.ones((20, 3, 3))
]

现在当我这么做的时候

wrapped_list = np.array(my_list)

我得到一个如下结构的对象

np.array(shape=(3, ), dtype=object)

以最初的三个数组作为内容。这就是我想要的。现在问题是:

如果my_list包含长度相同的子列表,那么我得到,例如

my_list2 = [
    np.ones((20, 3, 3)),
    np.ones((20, 3, 3)),
    np.ones((20, 3, 3))
]

np.array(my_list2)

导致

np.array(shape=(3, 20, 3, 3), dtype=np.float64)

这不是我想要的。我试着指定dtype,比如

np.array(my_list, dtype=object) 

它将所有(子)数组强制转换为dtype=object。你知道吗

我想我找到了一种完全不用包装的方法,但是我很好奇如何将数据类型设置为np.数组不影响嵌套的numpy数组。你知道吗


Tags: 对象numpyobjectmynpones数组结构
2条回答

另一种(愚蠢的)方式,至少有单一表达的优点:

wrapped_list = np.array(my_list + [None])[:-1]

首先创建一个空的对象数组并用我的\列表填充它,例如:

wrapped_list = np.empty((3,),dtype=object)
wrapped_list[:] = my_list2

相关问题 更多 >