gpt4 book ai didi

python - 应用于图像列表的 np.array 和 np.stack 有什么区别

转载 作者:行者123 更新时间:2023-12-05 03:44:20 30 4
gpt4 key购买 nike

我有一个包含相同二维形状的 numpy 数组的列表我想为 ConvNet 分类器打包这些图像,我尝试了两种方法,如下所示:

X_train = np.array(lst_imgs).reshape(m, 24, 40, 1)/255
XX_train = np.stack((lst_imgs), -1).reshape(m, 24, 40, 1)/255

两个张量的形状为:(4828, 24, 40, 1)

但是它们在每个索引处不包含相同的元素。有人可以向我解释一下 np.arraynp.stack 之间的区别是什么,哪个最合适?

非常感谢!

最佳答案

np.stacknp.array 提供完全相同的数组,除非您将特定轴传递给第二个。

让我们看一个关于二维数组的小列表的小例子

>>> lst = [i for i in np.arange(8).reshape(2,2,2)]
>>> lst
[array([[0, 1],
[2, 3]]), array([[4, 5],
[6, 7]])]

好的,它确实是一个由 2 个二维数组组成的列表,每个数组的形状均为 (2,2)

>>> np.array(lst)
array([[[0, 1],
[2, 3]],

[[4, 5],
[6, 7]]])
>>> np.stack(lst)
array([[[0, 1],
[2, 3]],

[[4, 5],
[6, 7]]])

好的,我们有相同的结果

>>> np.stack(lst, -1)
array([[[0, 4],
[1, 5]],

[[2, 6],
[3, 7]]])

但是如果我们堆叠第三个轴(这里的 -1 表示最后一个),我们也会得到一个 3D 数组,但元素的顺序不同。

在这里我不知道哪个是您用例的正确顺序。我刚刚解释了为什么您会得到不同的结果。

关于python - 应用于图像列表的 np.array 和 np.stack 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66494366/

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