Как сгенерировать 2-мерный массив NAN в python?

#python #numpy

#python #numpy

Вопрос:

Я пытаюсь сгенерировать 2-мерный массив (80 строк и 20 столбцов) из NAN , а затем заполнить его первый столбец, используя случайные числа 1,2 или 3.

Итак, вот мой код:

 import numpy.random as random
def getRowData():
    rowDt = np.eye(80,20)
    rowDt[:] = np.NaN
    rowDt[:,0] = random.choice([1,2,3],80) # Set the first column
    rowDt
  

но когда я запускаю свой код, он выдает мне None .

 print(getRowData())
None
  

я не думаю, что вывод моей функции должен быть None .

Итак, как я могу это исправить?

Комментарии:

1. Да, это Numpy

2. Я добавил тег.

3. вы ничего не возвращаете в своей функции. Итак, результат None . Последняя строка, rowDt , ничего не делает.

4. Кстати, ваш код возвращается None , потому что вы ничего не возвращаете. напишите return rowDt

5. Как говорит @P.Camilleri, последняя строка должна быть return rowDt . Ответ @yatu — это более простой и понятный способ получения двумерного массива.

Ответ №1:

Похоже, что ваша ошибка заключается просто в том, что вы не включаете return оператор в свою функцию. Рассмотрите возможность использования вместо:

 def getRowData():
    a = np.full((80,20), np.nan)
    a[:,0] = np.random.choice([1,2,3],80)
    return a
  

Вывод

 array([[ 3., nan, nan, ..., nan, nan, nan],
       [ 2., nan, nan, ..., nan, nan, nan],
       [ 1., nan, nan, ..., nan, nan, nan],
       ...,
       [ 2., nan, nan, ..., nan, nan, nan],
       [ 1., nan, nan, ..., nan, nan, nan],
       [ 1., nan, nan, ..., nan, nan, nan]])
  

Комментарии:

1. проблема также в том, что OP ничего не возвращает в своей функции

2. Но у него все та же проблема. я все еще получаю None

3. Ну, это совершенно очевидно, потому что нет return инструкции…. @P.Camilleri это была ваша причина для понижения голоса …?

4. Хорошо, это ваша точка зрения, рассмотрите возможность удаления вашего отрицательного голоса, учитывая, что я соответствующим образом исправил свой ответ (который я изначально не понял) и предоставил ответ, который решает проблему @P.Camilleri

5. @P.Camilleri принимая во внимание, что я исправил свой ответ, и это явно помогло OP и решило его проблему, кажется, что ваш donwnvote явно неоправдан…