强基初中数学&学Python——第226课 数字和数学第三方模块NumPy:菜鸟入门(2)

如何创建基本数组  包括np.array()np.zeros(),np.ones()np.empty(),np.arange(),np.linspace()函数,dtype参数。  要创建NumPy数组,可以使用函数np.array()。  创建一个数组最简单的办法是向np.array()传递一个列表。作为可选项,还可以在参数中指定数据类型。有关数据类型的更多信息请打开https://numpy.org/doc/stable/reference/arrays.dtypes.html#arrays-dtypes。

import numpy as np
>>> a = np.array([1, 2, 3])

  上面的执行过程如下图所示  请注意,上图只是简化了过程,目的让你对NumPy概念和机制有一个基本的了解。数组和数组操作的实际情况比上图的描述要复杂得多!  除了从序列创建数组外,还可以轻松创建一个填充有0的数组:

>>> np.zeros(2)
array([0., 0.])

或填充有1的数组:

>>> np.ones(2)
array([1., 1.])

甚至是一个空数组!函数empty创建一个数组,其初始内容是随机的,取决于内存的状态(只分配内存但不用0或1等具体数值刷一下。)。使用empty而非zeros(或类似的)是为了有更快的运行速度,只不过需确保在创建之后填充每个元素!

>>> # Create an empty array with 2 elements
>>> np.empty(2) 
array([3.14, 42.  ])  # may vary

您可以创建包含一系列元素的数组:

np.arange(4)
array([0, 1, 2, 3])

也可以使用np.linspace()创建一个数组,其中的值在指定的实数域内具有同样的间隔:

>>> np.linspace(0, 10, num=5)
array([ 0. ,  2.5,  5. ,  7.5, 10. ])

注意:输入的实数域是闭区间,参数num是元素个数。
  指定数据类型:  虽然默认的数据类型是浮点型(np.fat64),但你可以使用dtype关键字显式指定所需的数据类型。

>>> x = np.ones(2, dtype=np.int64)
>>> x
array([1, 1])

  想了解更多有关创建数组的知识请打开https://numpy.org/doc/stable/user/quickstart.html#quickstart-array-creation。
添加、删除和元素排序
  本节包括np.sort(),np.contanate()函数。  使用np.sort()对元素进行排序是很简单的。调用函数时,可以指定轴、种类和顺序。  如果原数组是:

arr = np.array([2, 1, 5, 3, 7, 4, 6, 8])

  你可以使用以下命令按升序快速排序数字:

np.sort(arr)
array([1, 2, 3, 4, 5, 6, 7, 8])

  除了返回数组的排序副本的sort函数之外,还可以使用:  · argsort:沿指定轴的间接排序,https://numpy.org/doc/stable/reference/generated/numpy.argsort.html#numpy.argsort。  · lexsort:对多个键的间接稳定排序,https://numpy.org/doc/stable/reference/generated/numpy.lexsort.html#numpy.lexsort。  · searchsorted:查找已排序数组中的元素,https://numpy.org/doc/stable/reference/generated/numpy.searchsorted.html#numpy.searchsorted。  · partition:部分排序,https://numpy.org/doc/stable/reference/generated/numpy.partition.html#numpy.partition。  要阅读有关数组排序的更多信息,请参阅sort:https://numpy.org/doc/stable/reference/generated/numpy.sort.html#numpy.sort。  如果现在有两个数组:

>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([5, 6, 7, 8])

你可以使用np.contanate连接它们。

>>> np.concatenate((a, b))
array([1, 2, 3, 4, 5, 6, 7, 8])

或者,是两个二维数组:

>>> x = np.array([[1, 2], [3, 4]])
>>> y = np.array([[5, 6]])

你可以这样连接它们:

>>> np.concatenate((x, y), axis=0)
array([[1, 2],
       [3, 4],
       [5, 6]])

axis=0是默认值,可以省略,表示最外层。最外层长度不一样,默认值连接没问题,但axis>0时出错:  为了从数组中删除元素,使用索引选择要保留的元素,然后用np.concatenate连接  要阅读有关连接的更多信息,请参阅concatenate:https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html#numpy.concatenate