Python 如何将(100,)到(250100)的numpy数组重塑

Python 如何将(100,)到(250100)的numpy数组重塑,python,numpy,Python,Numpy,假设您创建了一个具有100维的数组,然后计算一些内容并填充该数组。无论出于何种原因,您尚未创建二维阵列,您希望为该数据指定另一个维度,并以此为理由(例如,250个样本应具有该计算数据)这一问题有何错误 我已经搜索过了,但找不到任何解决方案。也许我没有用正确的关键字搜索 实际上,我想把一个100的numpy数组改成250100。 我读过这篇文章和其他几个链接,但没有帮到我 我也试过这样做: numpyarray = (100,) transformed_numpyarray = np.reshap

假设您创建了一个具有100维的数组,然后计算一些内容并填充该数组。无论出于何种原因,您尚未创建二维阵列,您希望为该数据指定另一个维度,并以此为理由(例如,250个样本应具有该计算数据)这一问题有何错误

我已经搜索过了,但找不到任何解决方案。也许我没有用正确的关键字搜索

实际上,我想把一个100的numpy数组改成250100。 我读过这篇文章和其他几个链接,但没有帮到我

我也试过这样做:

numpyarray = (100,)
transformed_numpyarray = np.reshape(numpyarray,(100,-1)).T
这给了我这个输出:

(1, 100)
但我真的不希望1作为2d数组的第一项。 我想做的是要么转换成,100,要么至少像这样的250100。250是一个常数,我已经知道,所以我想说,例如,对于250个100维的样品

谢谢。

numpy的数组是静态大小的,不能有形状可变的数组。如果您事先不知道会有多少样品,可以使用vstack逐步添加:

您还可以首先通过创建一个充满零的数组来定义大小,然后逐步用样本填充数组

numpyarray = np.zeros((250,100))
...
numpyarray[i] = new_sample

我仍然不知道你想做什么。到目前为止,我可以想象两种选择——重塑和重复。举例说明:

In [148]: x = np.arange(16)
In [149]: x
Out[149]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

In [150]: x.reshape(4,4)
Out[150]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

In [151]: np.repeat(x[None,:], 4, axis=0)
Out[151]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]])

100是1元素元组的标准python表示法,100不是有效的python语法。np.ReformEnumPyArray,100,-1出现错误,无法将大小为1的数组重新整形为形状100,newaxis。您的描述混淆了数组及其形状。您的链接指向keras问题。没有,100是一个有效的形状。这里没有一个与裸体相当的东西。@hpaulj非常感谢您的解释。虽然,100可能不是一个有效的,但我需要它以这种方式。或者我要用另一种方式更新我的问题。我可以更新100到250100。250是一个常数。这样做是否可行?这个问题与机器学习或scikit学习无关-请不要垃圾邮件删除标记。感谢您的回答,但我在运行示例ValueError后出现此错误:除连接轴之外的所有输入数组维度必须完全匹配。你知道吗?我也更新了我的问题。在这种情况下,更容易将其转换为常数,如250。第一个错误意味着采样的长度必须与numpyarray连接轴相同。在这种情况下,所有采样都必须具有形状100或1100,且numpyarray必须为n,100。关于这个问题的更新,当你重塑一个数组时,得到的数组必须有相同数量的单元格,在这种情况下,得到的数组会有更多的单元格。我编辑了关于如何做到这一点的答案。非常感谢。对于错误的解释,我遵循了与您的示例完全相同的方法,但得到了错误。你的第二个答案似乎可行,但我认为我需要对数据进行循环?。我现在不在工作。我会试一试,然后回到马克那里作为答案。再次感谢您抽出时间:这个答案完全符合我的要求@vlizana的回答也很正确,但我不想申请loop,让它变得昂贵。谢谢:你介意解释一下为什么我们需要这个x.4.4部分吗?不,对不起,你好像没有用过它;
In [148]: x = np.arange(16)
In [149]: x
Out[149]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

In [150]: x.reshape(4,4)
Out[150]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

In [151]: np.repeat(x[None,:], 4, axis=0)
Out[151]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]])