堆叠/连接数组和“无”?

时间:2014-05-03 19:12:18

标签: python arrays numpy stack concatenation

我有一些代码:

# 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
]

我该怎么做?

2 个答案:

答案 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列表。