Print Values From 2D Numpy Array

Question:

I’m new to numpy and have read several other posts like mine but nothing is working for me.

I have a large array with many NaNs and I’d like to look at values that are not NaN.

flower_matrix = np.array([
    [NaN,1,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,10,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,12,13,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [0,NaN,NaN,3,4,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,2,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,22,23],
    [NaN,NaN,2,NaN,NaN,5,6,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,4,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,16,17,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,4,NaN,NaN,7,8,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,],
    [NaN,NaN,NaN,NaN,NaN,NaN,6,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,18,19,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,6,NaN,NaN,9,10,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,8,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,20,21,NaN,NaN],
    [0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,8,NaN,NaN,11,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,10,NaN,NaN,NaN,14,15,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,1,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,15,NaN,NaN,NaN,19,NaN,NaN,NaN,NaN],
    [NaN,1,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,18,NaN,NaN,NaN,22,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,11,NaN,NaN,NaN,NaN,NaN,17,NaN,NaN,NaN,21,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,11,12,NaN,NaN,NaN,16,NaN,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,5,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,15,NaN,NaN,NaN,NaN,NaN,NaN,NaN,23],
    [NaN,NaN,NaN,NaN,NaN,5,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,14,NaN,NaN,NaN,18,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,7,NaN,NaN,NaN,NaN,NaN,13,NaN,NaN,NaN,17,NaN,NaN,NaN,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,7,NaN,NaN,NaN,NaN,12,NaN,NaN,NaN,NaN,NaN,NaN,NaN,20,NaN,NaN,NaN],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,9,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,19,NaN,NaN,NaN,23],
    [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,9,NaN,NaN,NaN,NaN,14,NaN,NaN,NaN,NaN,NaN,NaN,NaN,22,NaN],
    [NaN,NaN,NaN,3,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,13,NaN,NaN,NaN,NaN,NaN,NaN,NaN,21,NaN,NaN],
    [NaN,NaN,NaN,3,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,16,NaN,NaN,NaN,20,NaN,NaN,NaN]])

I know that I can do

print(flower_matrix[0,1])

to get the value 1.0. I’m looking to do something similar but iterated through columns and rows. My best guess is something like:

for i in flower_matrix:
    for j in flower_matrix:
        if (i,j) != NaN:
            print(i,j)

But of course this doesn’t work. I have 24 columns and 24 rows and I want to iterate through each value and return the value if it is not NaN. Does this make sense?

Thanks in advance!

Asked By: Laura Morgan

||

Answers:

You can try numpy ‘isnan’ function instead of != comparison which does not work for NaN values. Also you may try ‘is’ keyword of Python.
For Python:
NaN == NaN gives False
NaN is NaN gives True

This should help you with your problem.

print(flower_matrix[~np.isnan(flower_matrix)])

If you want iterative case:

for i in flower_matrix:
    for j in i:
        if j == j:
            print(j)
Answered By: şamil arınç
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.