如何在 Python 中向 numpy 数组添加维度
How to add a dimension to a numpy array in Python
我有一个大小为 (214, 144) 的数组。我需要它是 (214,144,1) 有没有办法在 Python 中轻松做到这一点?基本上尺寸应该是(天,时间,站)。因为我只有 1 个站的数据,维度将是 1。但是,如果我还可以使代码足够灵活地工作,比如 2 个站,那就太好了(例如,将维度大小从 (428,288) 更改为 (214,144,2))那太好了!
您可以使用 reshape
:
>>> a = numpy.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
>>> a.shape
(2, 6)
>>> a.reshape((2, 6, 1))
array([[[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6]],
[[ 7],
[ 8],
[ 9],
[10],
[11],
[12]]])
>>> _.shape
(2, 6, 1)
除了将形状从 (x, y)
更改为 (x, y, 1)
之外,您还可以使用 (x, y/n, n)
,但您可能希望根据输入指定列顺序:
>>> a.reshape((2, 3, 2))
array([[[ 1, 2],
[ 3, 4],
[ 5, 6]],
[[ 7, 8],
[ 9, 10],
[11, 12]]])
>>> a.reshape((2, 3, 2), order='F')
array([[[ 1, 4],
[ 2, 5],
[ 3, 6]],
[[ 7, 10],
[ 8, 11],
[ 9, 12]]])
1) 向任意维度的数组 a
添加维度:
b = numpy.reshape (a, list (numpy.shape (a)) + [1])
解释:
您得到 a
的形状,将其转换为列表,将 1
连接到该列表,并使用该列表作为 reshape
操作中的新形状。
2) 要指定维度的细分,并自动计算最后一个维度的大小,请使用 -1
作为最后一个维度的大小。例如:
b = numpy.reshape(a, [numpy.size(a,0)/2, numpy.size(a,1)/2, -1])
在这种情况下 b
的形状将是 [214,144,4]
。
(显然,如有必要,您可以结合使用这两种方法):
b = numpy.reshape (a, numpy.append (numpy.array (numpy.shape (a))/2, -1))
我有一个大小为 (214, 144) 的数组。我需要它是 (214,144,1) 有没有办法在 Python 中轻松做到这一点?基本上尺寸应该是(天,时间,站)。因为我只有 1 个站的数据,维度将是 1。但是,如果我还可以使代码足够灵活地工作,比如 2 个站,那就太好了(例如,将维度大小从 (428,288) 更改为 (214,144,2))那太好了!
您可以使用 reshape
:
>>> a = numpy.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
>>> a.shape
(2, 6)
>>> a.reshape((2, 6, 1))
array([[[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6]],
[[ 7],
[ 8],
[ 9],
[10],
[11],
[12]]])
>>> _.shape
(2, 6, 1)
除了将形状从 (x, y)
更改为 (x, y, 1)
之外,您还可以使用 (x, y/n, n)
,但您可能希望根据输入指定列顺序:
>>> a.reshape((2, 3, 2))
array([[[ 1, 2],
[ 3, 4],
[ 5, 6]],
[[ 7, 8],
[ 9, 10],
[11, 12]]])
>>> a.reshape((2, 3, 2), order='F')
array([[[ 1, 4],
[ 2, 5],
[ 3, 6]],
[[ 7, 10],
[ 8, 11],
[ 9, 12]]])
1) 向任意维度的数组 a
添加维度:
b = numpy.reshape (a, list (numpy.shape (a)) + [1])
解释:
您得到 a
的形状,将其转换为列表,将 1
连接到该列表,并使用该列表作为 reshape
操作中的新形状。
2) 要指定维度的细分,并自动计算最后一个维度的大小,请使用 -1
作为最后一个维度的大小。例如:
b = numpy.reshape(a, [numpy.size(a,0)/2, numpy.size(a,1)/2, -1])
在这种情况下 b
的形状将是 [214,144,4]
。
(显然,如有必要,您可以结合使用这两种方法):
b = numpy.reshape (a, numpy.append (numpy.array (numpy.shape (a))/2, -1))