Создание двух столбцов, один из которых содержит случайное число, а другой — первый столбец в кубе

#python #python-3.x

#python #python-3.x

Вопрос:

Как следует из названия, я просто хочу создать два столбца, в одном из которых 100 случайных чисел, а в другом — значение в кубе из первого столбца. Это моя попытка:

 import pandas as p
import numpy as n

c1 = list()
c2 = list()
for n in range (0, 99):
    c1 = [randint()]
    c2 = c1*c1*c1
    
print (c1, c2)
  

Я думал, что функция randint() встроена, но она выдает сообщение об ошибке.

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

1. привет, возможно import random , тогда используйте его print random.randint(0, 5)

2. Вам необходимо импортировать модуль random или использовать функцию numpy randint, поскольку у вас уже есть импортированный numpy

Ответ №1:

Я считаю, что вы пропустили:

 from random import randint
  

Ответ №2:

Поскольку вы уже знакомы с numpy , вы можете использовать функцию numpy random и генерировать n количество случайных целых чисел с максимально возможным целым числом range_limit следующим образом:

 from numpy import random
c1 = random.randint(range_limit, size=(n))
c2 = [i**3 for i in c1]
  

Итак, чтобы сгенерировать 5 значений от 0 до 100;

 c1 = random.randint(100, size=(5))
  

А затем куб их

Ответ №3:

Существует несколько проблем с текущим кодом:

  • вы импортируете библиотеки очень необычным способом. Гораздо чаще используется импорт numpy as np или pandas as pd .

  • randint() необходимо правильно вызвать. Это не встроенная функция в python. Это метод в np.random so, который либо выполняется from numpy.random import randint на этапе импорта, либо используется, как показано ниже. Кроме того, randint() исключая некоторые аргументы.

  • range(0,99) для вас будет сгенерировано только 99 чисел. Вы должны использовать range(0,100) или range(100) .

  • Вы не можете обойтись c1*c1*c1 с. lists Вам нужно сделать это для каждого элемента. Вы можете использовать понимание списка (см. Ниже). Кроме того, вы можете преобразовать lists numpy array с c1 = np.array(c1) помощью, а затем выполнить c1*c1*c1 .

Вот рабочее решение:

 import numpy as np

#using list comprehension to generate 100 random numbers between 0 to 9
c1 = [np.random.randint(10) for i in range(100)]

#using list comprehension to cube each number 
c2 = [x*x*x for x in c1]

print(c1)
print(c2)
  

Вывод:

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

[216 729  27  64  64   0  64 125 125  64 512 343 216   8 343 512 125 216
 729   0  64 216 216   1  64   1   8  64  27   8 216   0   1 125 125 216
 729 125   8  27   1  64 729   1 512 125 512   1  27   1   0 729   8 125
   0 343 729   1 512 729 343 343   8 125   0   8 729   1   0   8  64  64
 729  27  27 729 512   0 125 125   8 729 512   8  64   8 343  27   8 216
 512   1 125 729  64 216  27  64   8 512]