问题描述
我是 Python 新手,但我在 Java 和 C 方面有相当多的经验,我正在尝试创建一个特定大小的数组,然后用随机数填充它,但没有关于数组的 Python 教程提到这样做的方法(如果我明确搜索想要得到的结果不是问题)所以我想知道这在 Python 中是否被认为是一种不好的做法,并且有其他方法来完成我想要的。谢谢。
解决方法
使用随机或numpy
In [1]: import random
In [2]: [random.random() for i in range(10)]
Out[2]:
[0.8233249954348517,0.6215056571076538,0.6273288221606772,0.12055176228045617,0.22782244162965615,0.9016145766629989,0.04615407289582629,0.8870216740449745,0.5622680783939463,0.9288600326401598]
In [3]: import numpy
In [4]: numpy.random.rand(5)
Out[4]: array([0.9288893,0.66600315,0.82989425,0.15717061,0.33444802])
In [5]: list(numpy.random.rand(5))
Out[5]:
[0.46571036413626277,0.8268980751228664,0.9216520894106733,0.26706936577849916,0.47348417257319697]
,
对@icejoywoo 帖子的评论仍然是新手^
list 基本上是用于大多数用途的数组。
列表推导式是用很多东西填充数组的最简单方法
[ returnVal for i in range(10)]
任何 for 循环或迭代器都可以工作 返回值本身可以是一个函数
x= [None for i in range(10)]
[None,None..None]
x= [x**2 for i in range(10)]
[0,1,4..81]
y = lambda a: int((a**.5)*100)
x= [y(i) for i in range(10)]
[0,100,141,173,200,223,244,264,282,300]
,
您可以使用来自 random 的选择函数并给它一个 k
参数(要选择的值的数量):
>>> from random import choices
>>> choices(range(10),k=5)
[1,8,6,9,8]
,
通常,numpy 是处理数组的内存效率最高且速度最快的方法,尤其是在处理更复杂的事情时。
可以生成n个随机数like so
import numpy as np
# how many random numbers you want
n = 10
# create your array
array = np.random.rand(n)
您还可以使用列表理解在一个漂亮的 Pythonic 行中本地创建列表、集合、字典等。 See section 5.1.3 of the docs
这通常是最常用的方法,您会经常使用它们。
对于您的示例,我们也可以使用 Python 构建在随机包上
import random
# range here is a generator for values 0 to n-1
# array is created by a list comprehension
array = [random.random() for i in range(n)]