Рандомно заполнить двумерный массив питон

Python заполнить двумерный массив 3×3 числами от 1 до 9

Не могу понять в чем ошибка, вроде должен заполнять от 1 до 9, но в выводе получаю [[6, 7, 8], [6, 7, 8], [6, 7, 8]] . Добавил print() в цикле, показывает нормальное заполнение Подскажите, где ошибка?

4 ответа 4

В вашем примере создается список ссылок на один и тот же список. Попробуйте создавать список a таким образом:

Ну и counter стартовать с 1.

Можно еще так (при условии, что под массивом понимается список списков):

args = [ iter(range(1, 10)) ] * 3 l = [ list(t) for t in list(zip(*args)) ] 

list(zip(*[iter(range(1, 10))] * 3)) это жестокий способ матрицу 3×3 заполнить (обход коллекции по 3 элемента за раз). Вложенный цикл проще для понимания.

from itertools import count as count_from count = count_from(1) matrix = [[next(count) for _ in range(3)] for _ in range(3)] 

Получаем: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] [L]*3 создаёт список: [L, L, L] , то есть все элементы ссылаются на один и тот же объект (Что значит * (звёздочка) и ** двойная звёздочка в Питоне?). Если L неизменяем, например число, то не имеет значения один объект или несколько используются. Но если L изменяем, как к примеру список в вашем случае, то ваш код a[x][y] = counter изменяет один и тот же список, поэтому все ряды становятся равными последнему ряду (так как каждый ряд представлен одним и тем же списком).

Читайте также:  Css shadow внутри блока

Другими словами: [0]*3 можно использовать. [[0]*3]*3 не стоит использовать, а следует заменить на [[0]*3 for _ in range(3)] .

Источник

Создать двумерный список с случайными числами

Необходимо создать двумерный список 5*5, заполненный случайными значениями от 0 до 3.
Постоянно, как ни попытаюсь, выходит что-то типа
[[1, 1, 1, 2, 0], [1, 1, 1, 2, 0], [1, 1, 1, 2, 0], [1, 1, 1, 2, 0], [1, 1, 1, 2, 0]]
Т.е. числа в каждой новой строке повторяются. А так быть не должно.

for i in range(5): for k in range(5): a[i][k] = random.randint(0, 3)

Создать список из десяти элементов. Заполнить его случайными числами из промежутка от 20 до -50. Вывести этот список
Создать список из десяти элементов.Заполнить его случайными числами из промежутка от 20 до -50.

Cоздать двумерный список 10х10, заполнить случайными числами от 1 до 1000, найти самое маленькое число в нем
Cоздать двумерный список 10х10, заполнить случайными числами от 1 до 1000. Найти самое маленькое.

Заполнить двумерный массив случайными числами
Дан двумерный массив 5 х 5. Определите наибольшее и наименьшее числа в массиве и их координаты. .

Создать двумерный массив размером n * m, заполненный случайными числами
Само задание:Создать двумерный массив размером n * m, заполненный случайными числами. 1.

Источник

Создание массива со случайными значениями Numpy в Python

Чтобы создать массив numpy определенной формы со случайными значениями в Python, используйте rand() с формой массива, переданной в качестве аргумента.

В этом руководстве мы узнаем, как создать массив numpy со случайными значениями, используя примеры.

Синтаксис

Где, d0, d1, d2, .. – размеры в каждом измерении массива.

Например, numpy.random.rand (2,4) означает двумерный массив формы 2×4. И numpy.random.rand (51,4,8,3) означает 4-мерный массив формы 51x4x8x3.

Функция возвращает массив numpy с указанной формой, заполненный случайными значениями с плавающей запятой от 0 до 1.

Пример 1: создание одномерного массива

Чтобы создать одномерный массив numpy со случайными значениями, передайте длину массива функции rand().

В этом примере мы создадим одномерный массив numpy длиной 7 со случайными значениями для элементов.

import numpy as np #numpy array with random values a = np.random.rand(7) print(a)
[0.92344589 0.93677101 0.73481988 0.10671958 0.88039252 0.19313463 0.50797275]

Пример 2

Чтобы создать двумерный массив numpy со случайными значениями, передайте требуемую длину массива по двум измерениям в функцию rand().

В этом примере мы создадим двумерный массив numpy длиной 2 в измерении-0 и длиной 4 в измерении-1 со случайными значениями.

import numpy as np #numpy array with random values a = np.random.rand(2,4) print(a)
[[0.20499018 0.07289246 0.94701953 0.42017761] [0.66925148 0.53029125 0.70718627 0.36887072]]

Пример 3

Чтобы создать трехмерный массив numpy со случайными значениями, передайте длины по трем измерениям массива в функцию rand().

В этом примере мы создадим трехмерный массив чисел длиной 4, 2, 3 по трем измерениям со случайными значениями.

import numpy as np #numpy array with random values a = np.random.rand(4,2,3) print(a)
[[[0.78239285 0.77998473 0.29194015] [0.23218306 0.0828319 0.55339258]] [[0.20713848 0.67568804 0.5708645 ] [0.28212859 0.11966318 0.39348758]] [[0.63716278 0.33080523 0.33078874] [0.11114847 0.75312359 0.17301032]] [[0.88010661 0.03097883 0.38684319] [0.97854578 0.87874426 0.71835589]]]

В этом руководстве на примерах Python мы создали несколько массивов разных размеров со случайными значениями, используя функцию numpy.random.rand().

Источник

Двумерный массив с Rand-омным заполнением

Подскажите, пожалуйста, как реализовать данный код на Python-е?
А то рыскаю по теме массивов в Пайтоне и что-то не могу найти.
Т.е важно в не одномерном массиве заполнить всё рандомом и в цикле.
И ещё — выводить это переходя на новую строку когда строка заканчивается.
В Шарпе это делает операция Console.WriteLine(); при выходе из вложенного цикла (в котором строка заполнилась).
Я не студент, это не задание какое-то. Для себя учу, это всё важные моменты как базис.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { int h = 7; int w = 7; // Объявляем двумерный массив int[,] myArr = new int[h, w]; Random ran = new Random(); // Инициализируем данный массив for (int i = 0; i  h; i++) { for (int j = 0; j  w; j++) { myArr[i, j] = ran.Next(1, 15); Console.Write("\t", myArr[i, j]); } Console.WriteLine(); } Console.ReadLine(); } } }

Источник

Простой способ создания двумерного массива со случайными числами (Python)

[[random.random()]*N for x in range(N)] 

Это не работает, потому что каждый произвольный номер, который создается, затем реплицируется N раз, поэтому мой массив не имеет уникальных случайных чисел NxN. Есть ли способ сделать это в одной строке, не используя для циклов?

4 ответа

>>> N = 5 >>> import random >>> [[random.random() for i in range(N)] for j in range(N)] [[0.9520388778975947, 0.29456222450756675, 0.33025941906885714, 0.6154639550493386, 0.11409250305307261], [0.6149070141685593, 0.3579148659939374, 0.031188652624532298, 0.4607597656919963, 0.2523207155544883], [0.6372935479559158, 0.32063181293207754, 0.700897108426278, 0.822287873035571, 0.7721460935656276], [0.31035121801363097, 0.2691153671697625, 0.1185063432179293, 0.14822226436085928, 0.5490604341460457], [0.9650509333411779, 0.7795665950184245, 0.5778752066273084, 0.3868760955504583, 0.5364495147637446]] 
>>> import numpy as np >>> np.random.random((N,N)) array([[ 0.26045197, 0.66184973, 0.79957904, 0.82613958, 0.39644677], [ 0.09284838, 0.59098542, 0.13045167, 0.06170584, 0.01265676], [ 0.16456109, 0.87820099, 0.79891448, 0.02966868, 0.27810629], [ 0.03037986, 0.31481138, 0.06477025, 0.37205248, 0.59648463], [ 0.08084797, 0.10305354, 0.72488268, 0.30258304, 0.230913 ]]) 

(PS Это хорошая идея, чтобы привыкнуть говорить list , когда вы имеете в виду list и резервируете array для numpy ndarray s. На самом деле есть встроенный модуль array со своим собственным array , так что это путает вещи еще больше, но это относительно редко используется.)

Источник

Оцените статью