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