【问题标题】:Are there alternative methods to creating an empty array then filling it in Python?是否有其他方法可以创建一个空数组然后用 Python 填充它?
【发布时间】:2021-05-21 04:30:15
【问题描述】:

我是 Python 新手,但我在 Java 和 C 方面有相当多的经验,我正在尝试创建一个特定大小的数组,然后用随机数填充它,但没有关于数组的 Python 教程提到有关这样做的方法(如果我明确搜索想要得到不是问题的结果)所以我想知道这是否被认为是 Python 中的一种不好的做法,并且有其他方法可以完成我想要的。谢谢。

【问题讨论】:

标签: python arrays numpy numpy-ndarray


【解决方案1】:

一般来说,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)]

【讨论】:

    【解决方案2】:

    对@icejoywoo 帖子的评论仍然是新人^

    列表基本上是大多数用途的数组。

    列表推导式是用很多东西填充数组的最简单方法

    [ 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]
    

    【讨论】:

      【解决方案3】:

      您可以从 random 中使用选择函数并给它一个 k 参数(要选择的值的数量):

      >>> from random import choices
      >>> choices(range(10), k=5)
      [1, 8, 6, 9, 8]
      

      【讨论】:

        【解决方案4】:

        使用随机或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]
        

        【讨论】:

          猜你喜欢
          • 2012-11-26
          • 2020-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-11
          • 2021-11-27
          • 1970-01-01
          相关资源
          最近更新 更多