我在Python中遇到过这样的声明:
np.zeros(1 + X.shape[1])
我明白这是为了创建一个填充了here的零的数组,但无法理解这部分1 + X.shape[1]
。
我尝试过这样的小测试:
import numpy as np
X = [[1,2],[3,4]]
m = np.zeros(1 + X.shape[1])
print m
但是,得到以下内容:
Traceback (most recent call last):
File "test.py", line 3, in <module>
m = np.zeros(1 + X.shape[1])
AttributeError: 'list' object has no attribute 'shape'
为什么?我们怎样才能阅读上述陈述?
感谢。
答案 0 :(得分:2)
列表没有shape
属性。您应该使用np.array
来获得形状。
试试这个
import numpy as np
X = np.array([[1,2],[3,4]])
m = np.zeros(1 + X.shape[1])
print m
要使它成为一个numpy数组,你应该这样做X = np.array([[1,2],[3,4]])
这将是一个numpy数组。
X.shape
将返回(2,2)
而X.shape[1]
将返回2
。
因此1 + x.shape[1]
将返回3
而m = np.zeros(1 + X.shape[1])
m
将返回array([ 0., 0., 0.])