Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Python中numpy的问题_Python_Arrays_Numpy - Fatal编程技术网

关于Python中numpy的问题

关于Python中numpy的问题,python,arrays,numpy,Python,Arrays,Numpy,我使用普通Python编写了一个程序,现在我认为使用numpy而不是标准列表会更好。问题是有很多事情我都不知道如何使用numpy,或者我是否可以使用它 一般来说,np.array是如何工作的?它们是否像C++向量一样大小,或者我是否已经声明它们的长度和类型,就像标准的C++数组?在我的程序中,我有很多创建列表的案例 ex\u list=[]然后循环浏览某个内容并附加到它ex\u list.append(some\u lst)。我可以用numpy数组做一些类似的事情吗?如果我知道ex\u list

我使用普通Python编写了一个程序,现在我认为使用numpy而不是标准列表会更好。问题是有很多事情我都不知道如何使用numpy,或者我是否可以使用它

  • 一般来说,np.array是如何工作的?它们是否像C++向量一样大小,或者我是否已经声明它们的长度和类型,就像标准的C++数组?在我的程序中,我有很多创建列表的案例
    ex\u list=[]
    然后循环浏览某个内容并附加到它
    ex\u list.append(some\u lst)
    。我可以用numpy数组做一些类似的事情吗?如果我知道
    ex\u list
    的大小,我可以声明并清空一个,然后添加到其中吗
  • 如果我不能,假设我只调用这个列表,那么之后将其转换为numpy是否值得,即调用numpy列表是否更快

  • 我可以使用numpy数组对每个元素执行更复杂的操作吗(不仅仅是在每个etc中添加5个),如下例

    full_pallete=[(int(1+i*(255/127.5)),0,0)表示范围(0128)内的i]

    full\u pallete+=[col[1]!=0或col[2]!=0或col==(0,0,0)]时右调色板中的col的col

  • 换句话说,转换成一个numpy数组,然后使用for循环以外的东西循环它,这有意义吗

  • Numpy数组可以追加到(请参阅),尽管通常在循环中多次调用
    append
    函数会带来很大的性能代价-通常最好预先分配一个大数组,然后根据需要填充它。这是因为数组本身的大小是固定的,但在python中这是隐藏的

  • 是的,Numpy是为许多类似的操作精心设计的。但是,一般来说,如果numpy数组(或者python中的数组)非常大,您不希望在它们之间循环。通过使用内置的numpy函数,基本上可以利用各种编译后的加速优势。例如,您可以使用
    numpy.where()
    ,而不是循环检查每个元素的条件


  • 使用numpy的真正原因是受益于大型阵列上预编译的数学函数和数据处理实用程序——包括核心numpy库中的函数和许多其他使用它们的包。

    那么,如果是numpy阵列,有什么方法可以替代使用for循环的阵列呢?当然,我不想在大型数组中循环。但在我的例子中,我必须遍历一些非常大的数组,并更改其中的值。找到适合您试图解决的问题的numpy函数。尽管您可以根据需要循环使用它们,但性能的提高并不会让您受益。这些文档对所有这些都非常有用:。你特别想做什么?那么预分配np.array
    ex_arr=np的最有效方法是什么呢?零((size1,size2),int)
    (我想要int)你需要看看你的算法,找到
    int
    需要的上限。这完全取决于问题。最复杂的部分是:我通过矩阵
    m
    逐行循环
    r
    ,对于行中的每个值
    r[I]
    我使用它从另一个数组中识别另一个值
    获取值[r[I]
    。然后我使用一个哈希表为
    r[I]=hash\u表[get\u val[r[I]]]]