7

次のような 5 つの要素のリストまたは numpy 配列を作成するとします。

array = [i, j, k, l, m] 

どこ:

  • i範囲は 1.5 から 12.4 です
  • j範囲は 0 から 5 です
  • k範囲は 4 から 16 です
  • l範囲は 3 ~ 5 です
  • mは 2.4 から 8.9 の範囲です。

これは、一部の範囲に分数が含まれていることを示す例です。これを行う簡単な方法は何ですか?

4

3 に答える 3

10

あなたはただ行うことができます(user2357112に感謝します!)

[np.random.uniform(1.5, 12.4), np.random.uniform(0, 5), ...]

を使用してnumpy.random.uniform

于 2016-04-04T20:17:55.520 に答える
6

それらを手動で生成し、後でリストを作成することをお勧めします。

import numpy as np
i = np.random.uniform(1.5, 12.4)
j = np.random.randint(0, 5)  # 5 not included use (0, 6) if 5 should be possible
k = np.random.randint(4, 16) # dito
l = np.random.randint(3, 5)  # dito
m = np.random.uniform(2.4, 8.9.)

array = np.array([i, j, k, l, m]) # as numpy array
# array([  3.33114735,   3.        ,  14.        ,   4.        ,   4.80649945])

array = [i, j, k, l, m]           # or as list
# [3.33114735, 3, 14, 4, 4.80649945]

それらをすべて一度に作成したい場合はnp.random.random、範囲と下限を使用してそれらを変更し、浮動小数点数が不要な整数に変換できます。

# Generate 5 random numbers between 0 and 1
rand_numbers = np.random.random(5) 

# Lower limit and the range of the values:
lowerlimit = np.array([1.5, 0, 4, 3, 2.4])
dynamicrange = np.array([12.4-1.5, 5-0, 16-4, 5-3, 8.9-2.4]) # upper limit - lower limit

# Apply the range
result = rand_numbers * dynamicrange + lowerlimit

# convert second, third and forth element to integer
result[1:4] = np.floor(result[1:4]) 

print(result)
# array([ 12.32799347,   1.        ,  13.        ,   4.        ,   7.19487119])
于 2016-04-04T20:20:51.117 に答える
1
import random
array = [random.uniform(1.5, 12.4), random.uniform(0,5)]

print(array)

プリント:

[9.444064187694842, 1.2256912728995506]

これらを round() で丸めることができます

于 2016-04-04T20:20:24.460 に答える