使用尺寸 Python
Use size in Python
我在 python
中创建了一个 ndarray 数组
temp = np.array([1, 2, 3, 4])
要测量这个数组的长度,我可以使用
temp.size
或
np.size(temp)
both return 4. 但是我想知道这两个表达式有什么区别?另外,要获取 lena 图像,我需要写
>>> import scipy.misc
>>> lena = scipy.misc.lena()
我想知道为什么在 lena 后面有一对括号? lena不是矩阵吗?带有 () 的东西就像一个函数。我知道 lena() 是一个不需要输入的函数,return 是一个 ndarray。就是觉得这么写好无聊
在Matlab中,常量和函数的区别是很清楚的。函数是用()定义和调用的,但是可以直接调用常量(或预存),例如"blobs.png"
temp.size
是一个 属性 numpy.ndarray.size of ndarray
where as numpy.size 是一个自由函数,它调用 ndarray
的大小 属性 或具有 size
方法。
numpy.size
之所以灵活,是因为它可以作用于 ndarray
之类的对象或可以转换为 ndarray
的对象
numpy.size
也排除了可选的 axis
,它将计算大小。
这里是 numpy.array 的 implementation。
def size(a, axis=None):
if axis is None:
try:
return a.size
except AttributeError:
return asarray(a).size
else:
try:
return a.shape[axis]
except AttributeError:
return asarray(a).shape[axis]
np.size(temp)
比 temp.size
更通用一点。乍一看,他们似乎在做同样的事情:
>>> x = np.array([[1,2,3],[4,5,6]])
>>> x.size
6
>>> np.size(x)
6
当您不向 np.size
提供任何附加参数时,情况就是如此。但是,如果您查看 np.size
的 documentation,您会发现它接受一个额外的 axis
参数,该参数给出了沿相应轴的大小:
>>> np.size(x, 0)
2
>>> np.size(x, 1)
3
就您的第二个问题而言,scipy.misc.lena
是您指出的一个函数。它不是矩阵。它是一个返回矩阵的函数。该函数(大概)会动态加载数据,以便在您导入 scipy.misc
模块时不会将其放入内存中。这是一件很好的事情,实际上与 matlab 并没有什么不同。
我在 python
中创建了一个 ndarray 数组temp = np.array([1, 2, 3, 4])
要测量这个数组的长度,我可以使用
temp.size
或
np.size(temp)
both return 4. 但是我想知道这两个表达式有什么区别?另外,要获取 lena 图像,我需要写
>>> import scipy.misc
>>> lena = scipy.misc.lena()
我想知道为什么在 lena 后面有一对括号? lena不是矩阵吗?带有 () 的东西就像一个函数。我知道 lena() 是一个不需要输入的函数,return 是一个 ndarray。就是觉得这么写好无聊
在Matlab中,常量和函数的区别是很清楚的。函数是用()定义和调用的,但是可以直接调用常量(或预存),例如"blobs.png"
temp.size
是一个 属性 numpy.ndarray.size of ndarray
where as numpy.size 是一个自由函数,它调用 ndarray
的大小 属性 或具有 size
方法。
numpy.size
之所以灵活,是因为它可以作用于 ndarray
之类的对象或可以转换为 ndarray
numpy.size
也排除了可选的 axis
,它将计算大小。
这里是 numpy.array 的 implementation。
def size(a, axis=None):
if axis is None:
try:
return a.size
except AttributeError:
return asarray(a).size
else:
try:
return a.shape[axis]
except AttributeError:
return asarray(a).shape[axis]
np.size(temp)
比 temp.size
更通用一点。乍一看,他们似乎在做同样的事情:
>>> x = np.array([[1,2,3],[4,5,6]])
>>> x.size
6
>>> np.size(x)
6
当您不向 np.size
提供任何附加参数时,情况就是如此。但是,如果您查看 np.size
的 documentation,您会发现它接受一个额外的 axis
参数,该参数给出了沿相应轴的大小:
>>> np.size(x, 0)
2
>>> np.size(x, 1)
3
就您的第二个问题而言,scipy.misc.lena
是您指出的一个函数。它不是矩阵。它是一个返回矩阵的函数。该函数(大概)会动态加载数据,以便在您导入 scipy.misc
模块时不会将其放入内存中。这是一件很好的事情,实际上与 matlab 并没有什么不同。