Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在numpy数组中展平数组_Python_Arrays_Numpy - Fatal编程技术网

Python在numpy数组中展平数组

Python在numpy数组中展平数组,python,arrays,numpy,Python,Arrays,Numpy,我有一个相当愚蠢的问题,但出于某种原因,我就是不知道该怎么办。我有一个多维numpy数组,它应该具有以下形状: (345138、30300) 但是,它实际上具有以下形状: (345138,1) 在1元素数组中是包含形状的数组 (30,300) 那么,如何“移动”内部阵列,以使形状正确 目前看起来是这样的: [[ array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..

我有一个相当愚蠢的问题,但出于某种原因,我就是不知道该怎么办。我有一个多维numpy数组,它应该具有以下形状:

(345138、30300)

但是,它实际上具有以下形状:

(345138,1)

在1元素数组中是包含形状的数组

(30,300)

那么,如何“移动”内部阵列,以使形状正确

目前看起来是这样的:

[[ array([[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, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0]], dtype=int32)]
 [ array([[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, 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, 0, 0]],
 [ [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   ..., 
但是我希望这个没有数组(…),dtype=32,并将其中的内容移动到第一个数组中,使形状为(345138,30,300),如下所示:

[[ array([[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, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0]], dtype=int32)]
 [ array([[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, 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, 0, 0]],
 [ [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   ..., 

有什么想法吗?

看起来您有一个包含二维数组(对象数据类型)的二维数组。我可以用以下方法构造一个类似的:

In [972]: arr = np.empty(4,dtype=object)
In [973]: arr = np.empty((4,1),dtype=object)
In [974]: for i in range(4): arr[i,0]=np.ones((2,3),int)
In [975]: arr
Out[975]: 
array([[array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])]], dtype=object)
简单地将其包装在
np.array
中不起作用;不适用于列表:

In [976]: np.array(arr)
Out[976]: 
array([[array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])]], dtype=object)
In [977]: arr.tolist()
Out[977]: 
[[array([[1, 1, 1],
         [1, 1, 1]])], [array([[1, 1, 1],
         [1, 1, 1]])], [array([[1, 1, 1],
         [1, 1, 1]])], [array([[1, 1, 1],
         [1, 1, 1]])]]
“扁平化”的一种方法是使用某种版本的
连接

In [978]: np.stack(arr.ravel())
Out[978]: 
array([[[1, 1, 1],
        [1, 1, 1]],

       [[1, 1, 1],
        [1, 1, 1]],

       [[1, 1, 1],
        [1, 1, 1]],

       [[1, 1, 1],
        [1, 1, 1]]])
In [979]: _.shape
Out[979]: (4, 2, 3)
我使用
ravel
将外部数组减少到1d,而
stack
可以用作列表
stack
的作用类似于
np.array
,因为它将元素组合在一个新的轴上(我们可以指定)


tolist
array
可以一起工作:

In [981]: np.array(arr.tolist())
Out[981]: 
array([[[[1, 1, 1],
         [1, 1, 1]]],

       [[[1, 1, 1],
         [1, 1, 1]]],


       [[[1, 1, 1],
         [1, 1, 1]]],


       [[[1, 1, 1],
         [1, 1, 1]]]])
In [982]: _.shape
Out[982]: (4, 1, 2, 3)
或者
tolist
plus
square
(实际上是
np.asarray(…).square()


看起来您有一个包含二维数组(对象数据类型)的二维数组。我可以用以下方法构造一个类似的:

In [972]: arr = np.empty(4,dtype=object)
In [973]: arr = np.empty((4,1),dtype=object)
In [974]: for i in range(4): arr[i,0]=np.ones((2,3),int)
In [975]: arr
Out[975]: 
array([[array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])]], dtype=object)
简单地将其包装在
np.array
中不起作用;不适用于列表

In [976]: np.array(arr)
Out[976]: 
array([[array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])],
       [array([[1, 1, 1],
       [1, 1, 1]])]], dtype=object)
In [977]: arr.tolist()
Out[977]: 
[[array([[1, 1, 1],
         [1, 1, 1]])], [array([[1, 1, 1],
         [1, 1, 1]])], [array([[1, 1, 1],
         [1, 1, 1]])], [array([[1, 1, 1],
         [1, 1, 1]])]]
“扁平化”的一种方法是使用某种版本的
连接

In [978]: np.stack(arr.ravel())
Out[978]: 
array([[[1, 1, 1],
        [1, 1, 1]],

       [[1, 1, 1],
        [1, 1, 1]],

       [[1, 1, 1],
        [1, 1, 1]],

       [[1, 1, 1],
        [1, 1, 1]]])
In [979]: _.shape
Out[979]: (4, 2, 3)
我使用
ravel
将外部数组减少到1d,而
stack
可以用作列表
stack
的作用类似于
np.array
,因为它将元素组合在一个新的轴上(我们可以指定)


tolist
array
可以一起工作:

In [981]: np.array(arr.tolist())
Out[981]: 
array([[[[1, 1, 1],
         [1, 1, 1]]],

       [[[1, 1, 1],
         [1, 1, 1]]],


       [[[1, 1, 1],
         [1, 1, 1]]],


       [[[1, 1, 1],
         [1, 1, 1]]]])
In [982]: _.shape
Out[982]: (4, 1, 2, 3)
或者
tolist
plus
square
(实际上是
np.asarray(…).square()


您已经尝试过
.tolist()
了吗?尝试:
np.array(x)
如果形状兼容,它们将被压扁。hmmm不,不幸的是,这没有改变任何事情一个元素数组正在破坏一切。您是如何创建这个数组的?看看你是否能解决这个问题。是的,你可能是对的,我通过df从数据帧检索数组。as_matrix(),所以我假设它被错误地放入数据帧。你是否已经尝试过
.tolist()
?尝试:
np.array(x)
,如果形状兼容,它们将被压扁。嗯,不,很遗憾,这并没有改变任何事情一个元素数组正在毁掉一切你是怎么创建这个数组的?看看你是否能解决这个问题。是的,你可能是对的,我通过df.as_matrix()从数据帧检索数组,所以我假设它被错误地放入数据帧中。嗨,非常感谢,这很有效!但它也使我的电脑崩溃了:D你太棒了!嗨,非常感谢,这很有效!但它也使我的电脑崩溃了:D你太棒了!