Python Numpy 2D数组空矩阵的行数仍为1

时间:2016-04-04 22:00:48

标签: python numpy multidimensional-array

说我有一个矩阵A,B和C.当我将矩阵初始化为

A = np.array([[]])
B = np.array([[1,2,3]])
C = np.array([[1,2,3],[4,5,6]])

然后

B.shape[0]
C.shape[0]

分别给出1和2(如预期的那样),但

A.shape[0]

给出1,就像B.shape [0]。

获取给定矩阵的行数的最简单方法是什么,但仍然确保像A这样的空矩阵给出的值为零。

搜索堆栈溢出一段时间后,我找不到答案,所以我在下面发布了自己的答案,但是如果你能想出一个更清晰,更一般的答案,我会接受你的回答。谢谢!

3 个答案:

答案 0 :(得分:2)

A = np.array([[]])

这是一个1乘0的数组。你似乎想要一个0乘3的数组。这样的阵列几乎完全无用,但如果你真的想要一个,你可以制作一个:

A = np.zeros([0, 3])

然后你会A.shape[0] == 0

答案 1 :(得分:1)

您可以通过shape[0]是否为0的测试来限定size

In [121]: A.shape[0]*(A.size>0)
Out[121]: 0
In [122]: B.shape[0]*(B.size>0)
Out[122]: 1
In [123]: C.shape[0]*(C.size>0)
Out[123]: 2

或测试列数

In [125]: A.shape[0]*(A.shape[1]>0)
Out[125]: 0

A的独特之处在于列数,即第二维。

答案 2 :(得分:0)

使用

A.size/(len(A[0]) or 1)
B.size/(len(B[0]) or 1)
C.size/(len(C[0]) or 1)

分别产生0,1和2。