说我有一个矩阵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这样的空矩阵给出的值为零。
搜索堆栈溢出一段时间后,我找不到答案,所以我在下面发布了自己的答案,但是如果你能想出一个更清晰,更一般的答案,我会接受你的回答。谢谢!
答案 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。