Python np.array示例

时间:2018-02-01 22:47:07

标签: python neural-network

我是Python的新手。

我对以下内容发生的事情感到困惑:

A.shape = (60L, 128L, 128L)

B.shape = (2L, 60L, 128L, 5L)

和{{1}}

我相信它应该制作某种形象补丁。有人可以向我解释这是做什么的吗?这个例子是在神经网络应用于图像的背景下。

1 个答案:

答案 0 :(得分:1)

A的形状告诉我A很可能是60个灰度图像(批量大小为60)的数组,每个图像的大小为128x128像素。

我们有:B = np.array([A[..., n:n+5] for n in (5*4, 5*5)])。为了更好地了解这里发生的事情,让我们反过来打开这条线:

for n in (5*4, 5*5):这与for n in (20, 25)相同。由于与数据或其余代码相关的一些直观原因,作者可能选择以这种方式编写它。这为我们提供了n=20n=25

A[..., n:n+5]:这与A[:, :, n:n+5]相同。这为我们提供了A中所有图片的所有行,但n:n+5只列出了5列。然后,结果数组的形状为(60, 128, 5)

n=20为我们提供了A[:, :, 20:25]n=25为我们提供了A[:, :, 25:30]。因此,这些数组中的每一个都具有(60, 128, 5)的大小。

同时,[A[..., n:n+5] for n in (5*4, 5*5)]为我们提供了一个列表(谢谢列表理解!),其中包含两个元素,每个元素都是一个大小为(60, 128, 5)的numpy数组。 np.array()将此列表转换为形状为(2, 60, 128, 5)的numpy数组。

结果是B包含每个图像的2个色块,每个色块是原始图像的5像素列宽子集 - 一个从第20列开始,第二个从第25列开始。

如果没有关于网络及其目的的更多信息,我无法推测这种作物的原因。

希望这有帮助!