可以使用.重塑(-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是什么意思?
当前回答
当你使用-1(或任何其他负整数,我做这个测试kkk)在
b = numpy.reshape(a, -1)
你说的只是麻木的人。重塑自动计算向量的大小(行x列),并将其重新定位到具有该维度的1-D向量。这个命令很有趣,因为它会自动为您执行。如果您想通过输入一个正整数值来将向量重塑为1-D,那么重塑命令只有在正确输入值“rows x columns”时才会起作用。所以输入一个负整数会让这个过程更简单。
其他回答
-1代表“未知维度”,可以从另一个维度推断出来。 在这种情况下,如果你这样设置你的矩阵:
a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
像这样修改你的矩阵:
b = numpy.reshape(a, -1)
它将调用一些对矩阵a的默认操作,这将返回一个1-d numpy数组/矩阵。
然而,我不认为使用这样的代码是一个好主意。为什么不试试呢:
b = a.reshape(1, -1)
它会给你同样的结果,而且更容易让读者理解:将b设置为a的另一种形状。对于a,我们不知道它应该有多少列(设置为-1!),但我们想要一个一维数组(设置第一个参数为1!)
当你使用-1(或任何其他负整数,我做这个测试kkk)在
b = numpy.reshape(a, -1)
你说的只是麻木的人。重塑自动计算向量的大小(行x列),并将其重新定位到具有该维度的1-D向量。这个命令很有趣,因为它会自动为您执行。如果您想通过输入一个正整数值来将向量重塑为1-D,那么重塑命令只有在正确输入值“rows x columns”时才会起作用。所以输入一个负整数会让这个过程更简单。
假设我们有一个三维数组,大小为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对应行或列的未知计数。 我们可以把它看成x(未知)X是用原始数组中的元素数除以-1的有序对的另一个值得到的。
例子:
12个元素与重塑(-1,1)对应的数组x=12/1=12行1列。
12个元素具有重塑(1,-1)对应于一个有1行和x=12/1=12列的数组。
根据文档:
Newshape: int或int的元组 新形状应与原形状兼容。如果一个 整数,则结果将是该长度的一维数组。一个形状 维度可以是-1。在本例中,该值是从 数组的长度和剩余维度。