解压缩一般数组的numpy数组形状

Dip*_*ole 2 python numpy

一个例子:

    >>> import numpy as np    
    >>> list = [1,2,3,4]
    >>> array = np.asarray(list)
    >>> np.shape(array)
    (4,)
Run Code Online (Sandbox Code Playgroud)

现在说我想处理一个通用数组并分别读取变量m和行数和列数n,我会这样做:

>>> m, n = np.shape(array)
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)

对于上面的例子.在我上面的例子中,我会想到m=1n = 4反而是一个合适的结果.我错过了什么?

shx*_*hx2 5

你的数组有ndim = 1,这意味着len(array.shape)==1.因此,您无法将shape元组解压缩为长度== 2.

要"拉伸"你的数组以获得2dim,以防它当前有更少,请使用np.atleast_2d.

>>> x = np.arange(3.0)
>>> y = np.atleast_2d(x)
>>> y
array([[ 0.,  1.,  2.]])
>>> m, n = y.shape
Run Code Online (Sandbox Code Playgroud)

顺便说一句,listarray不是为在Python变量好名字.