如何用numpy正确地重塑这个数组?

2024-04-19 22:06:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我对数组以及它们在numpy和Python中的形状定义还比较陌生。我正在尝试将这个数组转换成这种格式,在列表中进行转换,然后转换成numpy数组需要花费大量的时间,因此我认为重新调整数组的形状会更快,而不是进行修改,这样会加快处理时间。以下是之前和之后:

   [[1, 2, 3, 4, 5, 6, 7, 8, 9],
    [9, 8, 7, 6, 5, 4, 3, 2, 1]]

我想要的是:

   [[[1], [2], [3], [4], [5], [6], [7], [8], [9]],
   [[9], [8], [7], [6], [5], [4], [3], [2], [1]]]

我已经能够通过列表理解成功地重塑每个子列表,但是我还没有弄清楚如何重塑整个数组,使每个int都在一个列表中。你知道吗


Tags: numpy列表定义格式时间数组int形状
3条回答

可以使用形状:

x = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9],
    [9, 8, 7, 6, 5, 4, 3, 2, 1]])
x.shape = (2,9,1)
print(x)  

输出:

[[[1]
  [2]
  [3]
  [4]
  [5]
  [6]
  [7]
  [8]
  [9]]

 [[9]
  [8]
  [7]
  [6]
  [5]
  [4]
  [3]
  [2]
  [1]]]

您可以查看numpy.expand_dims,单击here查看官方文档。你知道吗

import numpy as np

arr=[[1, 2, 3, 4, 5, 6, 7, 8, 9],
    [9, 8, 7, 6, 5, 4, 3, 2, 1]]
arr=np.array(arr)
arr=np.expand_dims(arr,axis=2)
print(arr.shape)
print(arr)

那么输出应该是你所期望的。你知道吗

您可以使用arr.reshape():-

import numpy as np
arr = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9],
[9, 8, 7, 6, 5, 4, 3, 2, 1]] )
arr = arr.reshape(2,9,1)
print(arr)

输出

[[[1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]
 [8]
 [9]]

[[9]
[8]
[7]
[6]
[5]
[4]
[3]
[2]
[1]]]

相关问题 更多 >