Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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_Numpy - Fatal编程技术网

Python 为常规阵列解包numpy阵列形状

Python 为常规阵列解包numpy阵列形状,python,numpy,Python,Numpy,例如: >>> import numpy as np >>> list = [1,2,3,4] >>> array = np.asarray(list) >>> np.shape(array) (4,) 现在假设我要处理一个常规数组,并将行数和列数分别读入变量m和n,我将执行以下操作: >>> m, n = np.shape(array) 但这会导致错误:

例如:

    >>> import numpy as np    
    >>> list = [1,2,3,4]
    >>> array = np.asarray(list)
    >>> np.shape(array)
    (4,)
现在假设我要处理一个常规数组,并将行数和列数分别读入变量
m
n
,我将执行以下操作:

>>> m, n = np.shape(array)
但这会导致错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:需要超过1个值才能解包

例如上面的例子。在我上面的例子中,我认为
m=1
n=4
应该是一个合适的结果。我缺少什么?

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

若要“拉伸”阵列使其具有2dim,以防其当前具有较少的2dim,请使用


顺便说一句,
list
array
在python中不是变量的好名称。

这是因为numpy将此数组处理为
1D array
np。shape
返回此
1D array
的shape值,它是一个带有单个元素的
元组。
因此,我们可以通过添加[]like
[[1,2,3,4]]
将其更改为
2D数组

您可以执行以下操作:

import numpy as np    

list = [[1,2,3,4]]
array = np.asarray(list)
print np.shape(array)
m, n = np.shape(array)
print m,n
输出:

(1, 4)
1 4
(1, 4)
1 4
或者,您也可以这样做:

import numpy as np    

list = [1,2,3,4]
list = [list]
array = np.asarray(list)
print np.shape(array)
m, n = np.shape(array)
print m,n
输出:

(1, 4)
1 4
(1, 4)
1 4
我希望,这会有帮助

是的,您应该避免使用名称
list
array
作为Python中的变量名。

您向我们展示了:

>>> np.shape(array)
    (4,)
也就是说,它是一个单元素元组

m, n = (4,)
产生相同的错误。元组中只有一个元素,因此Python只能将其解压为一个变量。这不是一个
numpy
问题。进行这种解包时,变量的数量必须与元组(或列表)中的术语数量相匹配


如果您来自MATLAB,您可能希望所有阵列都是2d或更大。但在numpy中,数组可以是1d甚至0d(形状
()
)。有多种方法可以确保您的阵列具有二维-
重塑
、额外的
[]
[无,…]
np。至少\u 2d

谢谢。你能解释一下为什么额外的[]会有不同吗?因为numpy将数组处理为1D数组,np.shape返回此1D数组的shape值,当添加[]时,我们创建了一个2D数组。很好,这很有意义-+1感谢你的努力和良好的解释。谢谢你,我很高兴帮助你。但是,您没有接受这个答案。:)