想象一下,您创建了一个具有100个维度的数组,然后计算了一些内容并填充了该数组。出于某种原因,您尚未创建2d数组,您想为该数据分配另一个维度的问题是什么呢?有理由说,例如250个样本应具有此计算出的数据?!
我已经搜索过此文件,但找不到任何解决方案。也许我搜索的关键词不正确!
实际上,我想将(100,)
的numpy数组重塑为(250,100)
。
我已经阅读了link和其他两个链接,但对我没有帮助。
我也尝试过这种方式:
numpyarray = (100,)
transformed_numpyarray = np.reshape(numpyarray,(100,-1)).T
这给了我这个输出:
(1, 100)
但是我真的不希望1
作为2d数组的第一项。
我想做的是要么转换为(,100)
,要么至少转换为类似的(250,100)
。 “ 250”是一个我已经知道的常数,所以我想说250个100维样本。
谢谢。
答案 0 :(得分:1)
numpy
的数组是静态大小的,不能有形状可变的数组。如果您事先不知道会有多少个样本,可以使用vstack
逐渐添加它们:
In [4]: numpyarray.shape
Out[4]: (3, 4)
In [5]: new_sample.shape
Out[5]: (4,)
In [6]: numpyarray = np.vstack([numpyarray, new_sample])
In [7]: numpyarray.shape
Out[7]: (4, 4)
您还可以先通过创建一个由零组成的数组来定义大小,然后逐渐将其填充样本。
numpyarray = np.zeros((250,100))
...
numpyarray[i] = new_sample
答案 1 :(得分:1)
我仍然对您要做什么感到困惑。到目前为止,我可以想象两个选择-重塑和重复。为了说明:
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]])