Создание 2D-массива со случайными числами БЕЗ NUMPY (Python) - PullRequest
0 голосов
/ 29 октября 2019

Как создать двумерный массив со случайными числами без использования NumPy (Python)

Ответы [ 3 ]

3 голосов
/ 29 октября 2019

Вы можете использовать модуль random и заполнить вложенный список пониманием списка

import random

low = 0
high = 10
cols = 10
rows = 5

[random.choices(range(low,high), k=cols) for _ in range(rows)]

[[5, 7, 1, 0, 6, 5, 9, 2, 5, 6],
 [9, 2, 3, 0, 6, 7, 0, 6, 6, 3],
 [2, 7, 9, 2, 4, 5, 5, 9, 9, 4],
 [2, 6, 7, 8, 5, 1, 4, 4, 4, 4],
 [9, 2, 8, 4, 5, 2, 0, 1, 2, 1]]

Для вложенного списка чисел можно сопоставить каждый range с float:

choices = list(map(float, range(low,high)))
[random.choices(choices , k=cols) for _ in range(rows)]

[[0.0, 3.0, 9.0, 1.0, 5.0, 3.0, 7.0, 4.0, 2.0, 4.0],
 [5.0, 8.0, 7.0, 7.0, 7.0, 2.0, 9.0, 8.0, 2.0, 6.0],
 [3.0, 3.0, 1.0, 9.0, 2.0, 8.0, 7.0, 2.0, 9.0, 7.0],
 [7.0, 8.0, 1.0, 2.0, 0.0, 6.0, 7.0, 6.0, 0.0, 9.0],
 [3.0, 3.0, 3.0, 1.0, 7.0, 8.0, 3.0, 9.0, 2.0, 8.0]]
2 голосов
/ 29 октября 2019
[[random.random() for _ in range(3)] for _ in range(7)]

Создает двумерный массив размером [7, 3] с случайным числом с плавающей точкой в ​​[0, 1) интервале .

. Вы используете вложенные списки. Внешний формирует основной список, а внутренний - списки, которые используются в качестве элементов основного списка.


Редактировать

Затем вы можете настроить его для своих нужд. Например:

import random
import pprint

NUM_ROWS=7
NUM_COLS=3
MAX_VAL=1000.50
MIN_VAL=-MAX_VAL

pprint.pprint([
  [random.uniform(MIN_VAL, MAX_VAL) for _ in NUM_COLS]
  for _ in NUM_ROWS
])

Печатает список / массив / матрицу из 7 строк и 3 столбцов со случайными числами с плавающей точкой в ​​интервале [-1000.50, 1000.50):

[[561.3985362160208, -157.9871329592354, -245.7102502320838],
 [-817.8786101352823, -528.9769041860632, 102.67728824479877],
 [-886.6488625065194, 941.0504221837489, -458.58155555154565],
 [6.69525238666165, 919.5903586746183, 66.70453038938808],
 [754.3718741592056, -121.25678519054622, -577.7163532922043],
 [-352.3158889341157, 254.9985130814921, -365.0937338693691],
 [563.0633042715097, 833.2963094260072, -946.6729221921638]]

Полученный массивможно индексировать с помощью array[line][column].

0 голосов
/ 29 октября 2019
import pandas as pd
from random import randint

outside_size = 10 # How many nested lists to include
inside_size = 10  # How many numbers will be in an inside list
outside_list = [] # The final list
for i in range(0, outside_size, 1):
    _list = [] # Create new "inside" (nested) list
    for j in range(0, inside_size, 1): # Populate the nested list with random numbers
        _list.append(randint(0, 100))
    outside_list.append(_list) # Add the inside (nested) list to the outside (final) list

df = pd.DataFrame(outside_list) # Create the dataframe from it
print(df)

ВЫХОД:

0   1    2   3   4   5   6   7   8   9
0  63  79  100  42  98  45  80  85  71  98
1  65  38   55   5  49  19  99  87  36  74
2  49  76   71  56  54  30  90  50  96  26
3  31  46   79  38  13  66  10  31   8  59
4   0  98    7  67  87   7  95  79  94  50
5  79  44   86  83   1  79  15  80  31  79
6  86   5   19  78  78  87  77   8  43  90
7  30  59    4   4  68  85  95  34  92  48
8  65  39   28  76  12  59  28  29  15  56
9  34  22   68  57  97  69  59  62  12  29

Для скорости и краткости кода вы можете использовать понимание вложенного списка, чтобы получить тот же эффект ...

outside_list = [[randint(0, 100) for j in range(0, inside_size)] for i in range(0, outside_size) ]
df = pd.DataFrame(outside_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...