#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 явно неоправдан…