我有一些代码:
# first round
curr_g = np.array([])
temp_g = np.array([1,2,3])
if curr_g is not None:
curr_g = temp_g
print "in is not none"
else:
curr_g = np.c_[curr_g, temp_g]
print "in is none"
print "curr_g: "
print curr_g
#second round
temp_g = np.array([4,5,6])
if curr_g is not None:
print "in is not none"
curr_g = temp_g
else:
print "in none"
curr_g = np.c_[curr_g, temp_g]
print "curr_g: "
print curr_g
以上的输出如下:
in is not none
curr_g:
[1 2 3]
in is not none
curr_g:
[4 5 6]
为什么这个条件会进入"不是没有"两次都在? curr_g
只是"不是没有"在被分配temp_g
之后的第二轮中。
我的目标是在第一轮中,因为curr_g
真的是空的,所以应该填充temp_g
,第二次,它实际上应该连接到temp_g
并且变成如下:
[
1 4
2 5
3 6
]
我该怎么做?
答案 0 :(得分:2)
“空”与None
不同。 None
是一个特定的对象,它与您的(或任何)numpy数组不同,因此您的数组不是None
。
如果要检查阵列是否为空,请执行if curr_g
。也就是说,为curr_g
创建一个空数组没有多大意义,如果您要做的就是用其他东西覆盖它。您可以使用curr_g = None
对其进行初始化,然后is None
检查就可以了。
答案 1 :(得分:1)
如果您要查看None
,则应明确指定None
。
curr_g = None
正如BrenBarn所提到的,你已经分配了一个空的numpy
数组,并且它不再等于None
而不是空的python列表。