我有以下问题,我有一个包含60个数组的数组,其中有21个数组,最后这些数组中有3个整数,当我执行形状时,它显示(60,)怎样才能使重塑为(60,21,3)呢?
我不太确定你在问什么,你没有留下很多细节。然而,这里有一些基本的numpy
函数似乎可以回答你的问题。
arr = np.random.rand(2,2,1)
print(arr)
#obviously you can use your dimensions of (60,21,3)
#however I am going to print the array
输出:
array([[[0.76494962],
[0.20654063]],
[[0.22742839],
[0.15418584]]])
如果你想打印精确的形状,在(2,2,1)的例子中,print(arr.shape)
给出的输出是(2, 2, 1)
。这是一个存储在numpy数组中的元组对象,因此不会改变,除非您使用新的numpy数组重新定义该数组。如果numpy不输出(60,21,3)
在你的情况下,有一个非常好的机会你设置你的代码不正确。
如果我想调整我的数组大小,重要的是你坚持你的数组的大小,在我的情况下,如果我使用np.size(arr)
函数我得到4
。这是因为2*2*1 = 4
,所以我必须重塑它的大小,坚持相同的大小。例如,这些是有效的调用:
arr = arr.reshape(4)
arr = arr.reshape(1,1,4)
arr = arr.reshape(1,1,2,2)
以此类推。只要你把数字相乘,结果就是np.size(arr)
。在本例中,您的形状为(60,21,3)
,因此您必须将其重塑为60*21*3 = 3780
的大小。
我还在下面留下了一个resize
函数的示例。同样,你没有留下太多关于你想要什么的细节,所以我假设它是我在这篇文章中概述的功能或解释之一。
>>> import numpy as np
>>> arr = np.random.rand(60,21,3)
>>> arr.shape
(60, 21, 3)
>>> arr = arr.reshape(3780)
>>> arr.shape
(3780,)
>>> arr = np.random.rand(60)
>>> arr.shape
(60,)
>>> arr = np.resize(arr, (60,21,3))
>>> arr.shape
(60, 21, 3)
您可能创建了一个列表(对象)数组,例如:
b = np.array([0], dtype=np.dtype(object))
b[0] = [4,5,6]
b.shape
给出b
为:array([list([4, 5, 6])], dtype=object)
和形状将是(1,),而不是'看到'由列表
表示的第二次元通过运行b.dtype