我正在检查np.zeros(X[-1].shape[0]))
的文件中有一段代码。在这里,我知道numpy
分配了0,但是shape[0]
在这里做什么
答案 0 :(得分:2)
shape
是一个元组,其长度等于数组的维数。因此,如果您有:
>>> a = np.array([[1, 2, 3], [4, 5, 6]])
>>> a.shape
(2, 3)
shape[0]
是第一个维度。
答案 1 :(得分:1)
似乎var abc = MyFunction('abc')
abc() // should return 'a' on this first call
abc() // should return 'b' on this second call
abc() // should return 'c' on this third call
abc() // should return 'a' again on this fourth call
可能是列表或数组,因此使用X
会返回最后一个元素,该元素必须是一个数组或1的切片。然后获取该数组或切片的形状,并返回第一维的长度。例如,如果您有一个数组列表:
X[-1]
如果>>> X = [ np.array([1,2,3]), np.array([[4,5,6],[7,8,9]]), np.array([10,11]) ]
>>> X[-1]
np.array([10., 11.])
>>> X[-1].shape
(2,)
>>> X[-1].shape[0]
2
>>> np.zeros(X[1].shape[0])
array([ 0., 0.])
仅仅是一个numpy数组,那么最后一个元素将是一个切片:
X
答案 2 :(得分:0)
当您无法理解表达式时,有助于将其分解:
np.zeros(X[-1].shape[0]))
这是在某事上呼叫np.zeros
X[-1].shape[0]
…正在访问第一个元素[0]
:
X[-1].shape
…正在访问shape
属性,
X[-1]
现在,假设X是多维数组X[-1]
是该数组的最后一行。这是另一个数组。
所以X[-1].shape
是数组的shape
属性:维的序列。
因此,如果X
是3x3x3数组,那么X[-1]
将是3x3数组,因此X[-1].shape
将是(3, 3)
。
X[-1].shape[0]
只是第一个维度:3
。
因此,我们正在创建一个零的一维数组,其大小是X
行的第一维的大小。
答案 3 :(得分:-1)
shape
变量是一个看起来像(cols, rows)
的元组。这意味着shape[0]
是指X[-1]
的列数。