Как заполнить массив NumPy 2D с помощью функции, возвращающей массив NumPy 1D - PullRequest
0 голосов
/ 14 мая 2018

У меня есть функция предикторов типа

def predictions(degree):
  some magic,
  return an np.ndarray([0..100])

Я хочу вызвать эту функцию для нескольких значений степени и использовать ее для заполнения большего np.ndarray (n = 2), заполняя каждую строкурезультат функции predictions.Это кажется простой задачей, но почему-то я не могу заставить ее работать.Я попытался с

for deg in [1,2,4,8,10]:
   np.append(result, predictions(deg),axis=1)

с результатом np.empty(100).Но это не удалось с Singleton array array(1) cannot be considered a valid collection.

Я не смог получить fromfunction, он работает только с кортежем координат, и неправильный список степеней не рассматривается в документах.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

append находится в скучной части NumPy. здесь вы знаете форму заранее

len_predictions = 100

def predictions(degree):
    return np.ones((len_predictions,))

degrees = [1,2,4,8,10]
result = np.empty((len(degrees), len_predictions))
for i, deg in enumerate(degrees):
    result[i] = predictions(deg)

если вы хотите как-то сохранить степень, вы можете использовать пользовательские dtypes

0 голосов
/ 14 мая 2018

Не используйте np.ndarray, пока вы не станете старше и мудрее!Я даже не смог бы использовать его, не перечитывая документы.

arr1d = np.array([1,2,3,4,5])

- это правильный способ построения 1d-массива из списка чисел.

Также не используйте np.append,Я даже не буду добавлять квалификацию «старше и мудрее».Это не работает на месте;и медленный при использовании в цикле.

Хороший способ построения массива 2 из 1d-массивов:

alist = []
for i in ....:
    alist.append(<alist or 1d array>)
arr = np.array(alist)

при условии, что все подсписки имеют одинаковый размер, arr должен быть2d массив.

Это эквивалентно созданию 2d массива из

np.array([[1,2,3], [4,5,6]])

, который представляет собой список списков.

Или понимание списка:

np.array([predictions(i) for i in range(10)])

Опять же, predictions все должны возвращать массивы или списки одинаковой длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...