我怎么能一直这样numpy.ndarray.shape返回二值元组?

2024-04-29 20:25:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个二维矩阵中得到(nRows,nCols)的值,但是当它是一行时(即x=np.数组(4.ncoos)返回到shape(1.ncoos)的值,因此将返回到shape(1.ncoos)的值(大于1.4)

有什么建议可以让我的陈述更具适应性?它是为一个在许多程序中使用的函数,应该同时使用单行和多行材质。谢谢!在


Tags: 函数程序np矩阵数组建议shape单行
2条回答

您可以创建一个返回行和列元组的函数,如下所示:

def rowsCols(a):
    if len(a.shape) > 1:
        rows = a.shape[0]
        cols = a.shape[1]
    else:
        rows = a.shape[0]
        cols = 0
    return (rows, cols)

其中a是您输入到函数的数组。下面是使用函数的示例:

^{pr2}$

这将打印rows 3 and columns 0,然后rows 4 and columns 3。或者,您可以使用atleast_2d函数来实现更简洁的方法:

(r, c) = np.atleast_2d(x).shape

print('rows {}, cols {}'.format(r, c))

(r, c) = np.atleast_2d(y).shape

print('rows {}, cols {}'.format(r, c))

它打印rows 1, cols 3和{}。在

如果您的函数使用

 (nRows, nCols) = x.shape 

它还可能对x进行索引或迭代,假设它有nRows行,例如

^{pr2}$

通常的做法是重塑x(根据需要),使其至少有1行。换句话说,将形状从(n,)更改为(1,n)。在

 x = np.atleast_2d(x)

做得很好。在函数内部,对x的这种更改不会影响函数外部的x。这样,您就可以通过函数将x视为2d,而不是不断地查看它是否是1dv2d

Python: How can I force 1-element NumPy arrays to be two-dimensional?

这是之前许多关于将1d数组视为2d数组的问题之一

相关问题 更多 >