Как вставить значение в двумерный массив в python

#python #arrays #for-loop #numpy-ndarray

Вопрос:

Я пытался заставить личную домашнюю работу работать должным образом, но, похоже, не могу сделать это правильно. Мне нужно вставить случайное значение в 2D-массив, используя два цикла For, и распечатать массив. Это то, что у меня есть, но это еще не закончено, и это основа моей борьбы.

 import numpy as np

import random

arr = np.array([], [])

for i in range(0, 6):
    
    for j in range(0, 6):
        value = random.randint(0, 6)
        arr[i][j] = value
        print(arr(i, j))
print('')
 

Я хочу знать, как вставить случайное значение в позицию массива , например, если цикл for говорит мне, что я нахожусь в позиции 0,0, то я хочу вставить число в эту позицию.

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

1. Покажите полную обратную связь для любых ошибок, которые вы получите

Ответ №1:

В общем, вы должны сделать все возможное, чтобы избежать циклов с Numpy. Это противоречит цели. Почти для всего, что вы хотите сделать, есть простой способ, который не требует цикла.

Здесь вы можете использовать numpy.random.randint и создавать массив напрямую, без цикла. Это будет намного быстрее:

 import numpy as np

# arguments are low, high, shape
arr = np.random.randint(0, 6, (6, 6))

# array([[0, 4, 0, 5, 3, 4],
#        [2, 2, 0, 0, 3, 1],
#        [1, 3, 5, 0, 4, 2],
#        [3, 1, 1, 4, 5, 2],
#        [2, 5, 4, 3, 2, 3],
#        [2, 3, 0, 2, 0, 0]])
 

Ответ №2:

Некоторые изменения:

  1. Определите массив с np.нулями
  2. print(arr(i, j)) Для print(arr[i, j])
 arr = np.zeros((6, 6))
import random
for i in range(0, 6):
    for j in range(0, 6):
        value = random.randint(0, 6)
        arr[i][j] = value
        print(arr[i, j])
 

Если вы хотите распечатать весь массив, вы можете сделать это:

 arr = np.zeros((6, 6))
import random
for i in range(0, 6):
    for j in range(0, 6):
        value = random.randint(0, 6)
        arr[i][j] = value
print(arr)
 

Ответ №3:

Создание массива с arr = np.array([], []) помощью дает вам массив без строк и столбцов, поэтому вы будете использовать индексы, которые выходят за рамки, как только вы попытаетесь установить значение. Вам нужно придать массиву некоторое измерение при его создании, даже если вы не указали начальные значения. Есть несколько способов сделать это, но попробуйте вот это:

 import numpy as np
import random

arr = np.empty(shape=(6, 6)) # np.zeroes would also work

print(arr)

for i in range(0, 6):
    for j in range(0, 6):
        value = random.randint(0, 6)
        arr[i][j] = value

print(arr)