Итерация многомерного массива - PullRequest
0 голосов
/ 11 октября 2019

это мой первый вопрос здесь, и я думаю, что это относительно тривиально для вас. Я должен создать матрицу M1 1000x10 со стандартными логистически распределенными случайными числами. Затем я должен присвоить номера 1-4 элементам M2 (i, j) матрицы M2 1000x10 с помощью циклов For, если элементы матрицы M1 (i, j) удовлетворяют следующим условиям:

  • M2 (i, j) = 1, если M1 (i, j) меньше -3
  • M2 (i, j) = 2, если M1 (i, j) больше или равно -3, иm1 меньше 0
  • M2 (i, j) = 3, если M1 (i, j) больше или равно 0 u m1 меньше 3
  • M2 (i, j) = 4если M1 (i, j) больше или равно 3.

Я пришел к решению, которое работает, но оно объективно громоздко:

scale = 1 
mu = 0
M1 = np.random.logistic(mu, scale, (1000, 10))

def FUN(i):
    if i < -3:
        return 1
    else:
        if i < 0 and i >= -3:
            return 2
        else:
            if i < 3 and i >= 0:
                return 3
            else:
                if i >= 3:
                    return 4 

M2 = []
for j in M1:
    for i in j:
        M2.append(FUN(i))

M2 = np.reshape(M2, (1000, 10))

Теперь яЯ уверен, что есть много способов повысить эффективность решения. Как бы вы сделали? Заранее спасибо за ваши ответы - и, возможно, ваши объяснения!

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