猿问

Python Numpy:将数据从一维数组插入二维数组

我试图将一维数组中的数据插入到二维数组中,并仍然保持二维数组的形状。


我下面的代码将二维数组重新格式化为一维。另外,为什么我现在有 26 个索引?我缺少什么?


import numpy as np


oneD_Array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,

                      15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])


twoD_Array = np.zeros((5, 5))


print(oneD_Array.shape)

print(oneD_Array)

print()

print()

print(twoD_Array.shape)

print(twoD_Array)


for i in range(len(oneD_Array), -1, -1):

    # for subArray in twoD_Array:

    twoD_Array = np.insert(oneD_Array, 0, [i])


print()

print(twoD_Array)

print(twoD_Array.shape)

输出是:


(25,)

[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

 25]



(5, 5)

[[0. 0. 0. 0. 0.]

 [0. 0. 0. 0. 0.]

 [0. 0. 0. 0. 0.]

 [0. 0. 0. 0. 0.]

 [0. 0. 0. 0. 0.]]


[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

 24 25]

(26,)


慕姐4208626
浏览 194回答 3
3回答

回首忆惘然

您只需使用np.reshape:twoD_Array = np.reshape(oneD_Array, (5, 5))输出:array([[ 1,  2,  3,  4,  5],        [ 6,  7,  8,  9, 10],        [11, 12, 13, 14, 15],        [16, 17, 18, 19, 20],        [21, 22, 23, 24, 25]])

偶然的你

因为np.insert实际上是在给定索引处将元素插入到数组中。怎么样:twoD_Array.ravel()[:] = oneD_Array

慕后森

如果你坚持使用循环,可以这样写:for i in range(len(oneD_Array)):     twoD_Array[i//twoD_Array.shape[1], i%twoD_Array.shape[1]] = oneD_Array[i]但这绝对不是最快的方法。在我的机器上,对于 500x500 阵列,我的循环需要 85 毫秒,使用 ndarray.ravel 需要 223 微秒,使用 np.reshape 需要 1.17 微秒,使用 ndarray.reshape 需要 357 纳秒。所以我会选择twoD_Array = oneD_Array.reshape((5, 5))
随时随地看视频慕课网APP

相关分类

Python
我要回答