Reputation: 12747
I have some code:
# 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
And the output of the above is as follows:
in is not none
curr_g:
[1 2 3]
in is not none
curr_g:
[4 5 6]
Why on earth does the condition go into "Not none" both times around? curr_g
is only "not None" in the second round, after being assigned temp_g
.
My objective is that in the first round, because curr_g
is truly empty, it should be populated with temp_g
, and the second time, it should actually get concatenated to temp_g
and become as follows:
[
1 4
2 5
3 6
]
How can I do this?
Upvotes: 0
Views: 49
Reputation: 75585
If you want to check for None
, you should assign None
explicitly.
curr_g = None
As BrenBarn mentioned, you have assigned an empty numpy
array, and that is no more equal to None
than an empty python list is.
Upvotes: 1
Reputation: 251478
"Empty" is not the same as None
. None
is a particular object, and it is different from your (or any) numpy array, so your array is not None
.
If you want to check whether your array is empty, just do if curr_g
. That said, it doesn't make a lot of sense to create an empty array for curr_g
if all you're going to do is overwrite it with something else. You could just initialize it with curr_g = None
, and then your is None
check will work.
Upvotes: 2