可以使用.重塑(-1)将2D数组重新塑造为1D数组。 例如:
>>> a = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> a.reshape(-1)
array([[1, 2, 3, 4, 5, 6, 7, 8]])
通常,array[-1]表示最后一个元素。 这里-1是什么意思?
可以使用.重塑(-1)将2D数组重新塑造为1D数组。 例如:
>>> a = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> a.reshape(-1)
array([[1, 2, 3, 4, 5, 6, 7, 8]])
通常,array[-1]表示最后一个元素。 这里-1是什么意思?
当前回答
长话短说:您设置一些维度,让NumPy设置其余的维度。
(userDim1, userDim2, ..., -1) -->>
(userDim1, userDim1, ..., TOTAL_DIMENSION - (userDim1 + userDim2 + ...))
其他回答
长话短说:您设置一些维度,让NumPy设置其余的维度。
(userDim1, userDim2, ..., -1) -->>
(userDim1, userDim1, ..., TOTAL_DIMENSION - (userDim1 + userDim2 + ...))
假设我们有一个三维数组,大小为2 x 10 x 10:
r = numpy.random.rand(2, 10, 10)
现在我们要重塑为5 X 5 X 8:
numpy.reshape(r, shape=(5, 5, 8))
会完成任务的。
注意,一旦你修复了第一个dim = 5和第二个dim = 5,你就不需要确定第三个维度了。为了帮助你的懒惰,Numpy提供了使用-1的选项:
numpy.reshape(r, shape=(5, 5, -1))
会得到一个shape =(5,5,8)的数组。
同样的,
numpy.reshape(r, shape=(50, -1))
会得到一个数组shape = (50,4)
你可以在http://anie.me/numpy-reshape-transpose-theano-dimshuffle/上阅读更多
"在所有其他维度都已指定的情况下,推断出这个维度"
显式地,这将使-1维度成为原始数组的维度积与新指定的dim的维度积的商。如果不是整数,则返回错误。
例如,对于一个形状数组(2,3,5),以下都是等价的:
a = np.random.rand(2, 3, 5)
np.reshape(a, (-1, 2, 5))
np.reshape(a, ( 3, -1, 5))
np.reshape(a, ( 3, 2, -1))
numpy.reshape(a,newshape,order{})
查看下面的链接获取更多信息。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
对于下面的示例,您提到的输出将结果向量解释为单行。(-1)表示行数为1。 如果
a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)
输出:
matrix([[1, 2, 3, 4, 5, 6, 7, 8]])
这可以用另一个例子来更准确地解释:
b = np.arange(10).reshape((-1,1))
输出:(1维柱状阵列)
array([[0],
[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9]])
or
b = np.arange(10).reshape((1,-1))
输出:(是一个1维行数组)
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
import numpy as np
x = np.array([[2,3,4], [5,6,7]])
# Convert any shape to 1D shape
x = np.reshape(x, (-1)) # Making it 1 row -> (6,)
# When you don't care about rows and just want to fix number of columns
x = np.reshape(x, (-1, 1)) # Making it 1 column -> (6, 1)
x = np.reshape(x, (-1, 2)) # Making it 2 column -> (3, 2)
x = np.reshape(x, (-1, 3)) # Making it 3 column -> (2, 3)
# When you don't care about columns and just want to fix number of rows
x = np.reshape(x, (1, -1)) # Making it 1 row -> (1, 6)
x = np.reshape(x, (2, -1)) # Making it 2 row -> (2, 3)
x = np.reshape(x, (3, -1)) # Making it 3 row -> (3, 2)