ITPub博客

首页 > 区块链 > 区块链 > 浅谈/合约跟单系统开发/合约量化系统开发源码功能/方案

浅谈/合约跟单系统开发/合约量化系统开发源码功能/方案

原创 区块链 作者:Tg_StPv888 时间:2023-03-28 13:48:59 0 删除 编辑

Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 Numpy 中,数组的维数称为数组的秩。给出数组沿每个维的大小的整数元组称为数组的形状。Numpy 中的数组类称为ndarray。Numpy 数组中的元素可以使用方括号访问,并且可以使用嵌套的 Python 列表进行初始化。

 

例子 :

 

[[ 1, 2, 3],       [ 4, 2, 5]] Here, rank = 2 (as it is 2-dimensional or it has 2 axes) First dimension(axis) length = 2, second dimension has length = 3 overall shape can be expressed as: (2, 3) 复制代码 # 演示基本数组特征的 Python 程序 import numpy as np   # 创建数组对象 arr = np.array( [[ 1, 2, 3],                  [ 4, 2, 5]] )   # arr 对象的打印类型 print("Array is of type: ", type(arr))   # 打印数组维度(轴) print("No. of dimensions: ", arr.ndim)   # 阵列的打印形状 print("Shape of array: ", arr.shape)   # 数组的打印大小(元素总数) print("Size of array: ", arr.size)   # 打印数组中元素的类型 print("Array stores elements of type: ", arr.dtype) 

 

输出 :

 

Array is of type:  <class 'numpy.ndarray'> No. of dimensions:  2 Shape of array:  (2, 3) Size of array:  6 Array stores elements of type:  int64 

 

数组创建

在 NumPy 中有多种创建数组的方法。

 

例如,您可以使用array函数从常规 Python列表或元组创建一个数组。 结果数组的类型是从序列中元素的类型推导出来的。****

 

通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy 提供了几个函数来创建具有初始占位符内容的数组。这些最大限度地减少了增长阵列的必要性,这是一项昂贵的操作。

例如:  np.zeros、np.ones、np.full、np.empty 等。

 

为了创建数字序列,NumPy 提供了一个类似于 range 的函数,它返回数组而不是列表。

 

arange: 返回给定间隔内均匀分布的值。步长是指定的。

 

linspace: 返回给定间隔内均匀分布的值。编号_ 的元素被返回。

 

重塑数组: 我们可以使用reshape方法来重塑数组。考虑一个形状为 (a1, a2, a3, ..., aN) 的数组。我们可以重新整形并将其转换为另一个形状为 (b1, b2, b3, ..., bM) 的数组。需要的条件是:

a1 x a2 x a3 … x aN = b1 x b2 x b3 … x bM 。(即数组的原始大小保持不变。)

 

扁平化数组: 我们可以使用扁平化方法将数组的副本折叠成一维。它接受order参数。默认值为“C”(用于行优先顺序)。使用“F”表示列主要顺序。

 

注意: 数组的类型可以在创建数组时显式定义。

 

# 演示数组创建技术的 Python 程序 import numpy as np   # 从浮点类型的列表创建数组 a = np.array([[1, 2, 4], [5, 8, 7]], dtype = 'float') print ("Array created using passed list:\n", a)   # 从元组创建数组 b = np.array((1 , 3, 2)) print ("\nArray created using passed tuple:\n", b)   # 创建一个全为零的 3X4 数组 c = np.zeros((3, 4)) print ("\nAn array initialized with all zeros:\n", c)   # 创建一个复杂类型的常量值数组 d = np.full((3, 3), 6, dtype = 'complex') print ("\nAn array initialized with all 6s."             "Array type is complex:\n", d) 

 

输出 :

 

Array created using passed list:  [[ 1.  2.  4.]  [ 5.  8.  7.]] Array created using passed tuple:  [1 3 2] An array initialized with all zeros:  [[ 0.  0.  0.  0.]  [ 0.  0.  0.  0.]  [ 0.  0.  0.  0.]] An array initialized with all 6s. Array type is complex:  [[ 6.+0.j  6.+0.j  6.+0.j]  [ 6.+0.j  6.+0.j  6.+0.j]  [ 6.+0.j  6.+0.j  6.+0.j]] 

 

数组索引

了解数组索引的基础知识对于分析和操作数组对象很重要。NumPy 提供了许多方法来进行数组索引。

 

切片: 就像 python 中的列表一样,NumPy 数组可以切片。由于数组可以是多维的,因此您需要为数组的每个维度指定一个切片。

 

整数数组索引: 在此方法中,传递列表以对每个维度进行索引。完成对应元素的一对一映射以构造一个新的任意数组。

 

布尔数组索引: 当我们想从数组中选择满足某些条件的元素时使用此方法。

 

# 在 numpy 中演示索引的 Python 程序 import numpy as np   # 一个示例数组 arr = np.array([[-1, 2, 0, 4],                 [4, -0.5, 6, 0],                 [2.6, 0, 7, 8],                 [3, -7, 4, 2.0]])   # 切片数组 temp = arr[:2, ::2] print ("Array with first 2 rows and alternate"                     "columns(0 and 2):\n", temp)   # 整数数组索引示例 temp = arr[[0, 1, 2, 3], [3, 2, 1, 0]] print ("\nElements at indices (0, 3), (1, 2), (2, 1),"                                     "(3, 0):\n", temp)   # 布尔数组索引示例 cond = arr > 0 # cond is a boolean array temp = arr[cond] print ("\nElements greater than 0:\n", temp) 

 

输出 :

 

Array with first 2 rows and alternatecolumns(0 and 2):  [[-1.  0.]  [ 4.  6.]] Elements at indices (0, 3), (1, 2), (2, 1),(3, 0):  [ 4.  6.  0.  3.] Elements greater than 0:  [ 2.   4.   4.   6.   2.6  7.   8.   3.   4.   2. ] 

 

基本操作

NumPy 提供了大量的内置算术函数。

 

对单个数组的操作: 我们可以使用重载的算术运算符对数组进行元素操作以创建一个新数组。在 +=、-=、*= 运算符的情况下,将修改现有数组。

 

# 演示单个数组的基本操作的 Python 程序 import numpy as np   a = np.array([1, 2, 5, 3])   # 每个元素加 1 print ("Adding 1 to every element:", a+1)   # 从每个元素中减去 3 print ("Subtracting 3 from each element:", a-3)   # 将每个元素乘以 10 print ("Multiplying each element by 10:", a*10)   # 平方每个元素 print ("Squaring each element:", a**2)   # 修改现有数组 a *= 2 print ("Doubled each element of original array:", a)   # 数组转置 a = np.array([[1, 2, 3], [3, 4, 5], [9, 6, 0]])   print ("\nOriginal array:\n", a) print ("Transpose of array:\n", a.T) 

 

输出 :

 

Adding 1 to every element: [2 3 6 4] Subtracting 3 from each element: [-2 -1  2  0] Multiplying each element by 10: [10 20 50 30] Squaring each element: [ 1  4 25  9] Doubled each element of original array: [ 2  4 10  6] Original array:  [[1 2 3]  [3 4 5]  [9 6 0]] Transpose of array:  [[1 3 9]  [2 4 6]  [3 5 0]] 

 

一元运算符:许多一元运算作为 ndarray类的方法提供。这包括 sum、min、max 等。这些函数也可以通过设置轴参数来逐行或逐列应用。

 

# 在 numpy 中演示一元运算符的 Python 程序 import numpy as np   arr = np.array([[1, 5, 6],                 [4, 7, 2],                 [3, 1, 9]])   # 数组的最大元素 print ("Largest element is:", arr.max()) print ("Row-wise maximum elements:",                     arr.max(axis = 1))   # 数组的最小元素 print ("Column-wise minimum elements:",                         arr.min(axis = 0))   # 数组元素之和 print ("Sum of all array elements:",                             arr.sum())   # 每行的累积总和 print ("Cumulative sum along each row:\n",                         arr.cumsum(axis = 1)) 

 

输出 :

 

Largest element is: 9 Row-wise maximum elements: [6 7 9] Column-wise minimum elements: [1 1 2] Sum of all array elements: 38 Cumulative sum along each row: [[ 1  6 12]  [ 4 11 13]  [ 3  4 13]] 

 

二元运算符: 这些操作适用于数组元素并创建一个新数组。您可以使用所有基本的算术运算符,如 +、-、/、等。如果是 +=、-=、  = 运算符,则会修改现有数组。

 

# 在 Numpy 中演示二元运算符的 Python 程序 import numpy as np   a = np.array([[1, 2],             [3, 4]]) b = np.array([[4, 3],             [2, 1]])   # 添加数组 print ("Array sum:\n", a + b)   # 乘法数组(元素乘法) print ("Array multiplication:\n", a*b)   # 矩阵乘法 print ("Matrix multiplication:\n", a.dot(b)) 

 

输出:

 

Array sum: [[5 5]  [5 5]] Array multiplication: [[4 6]  [6 4]] Matrix multiplication: [[ 8  5]  [20 13]] 

 

通用函数 (ufunc):  NumPy 提供熟悉的数学函数,例如 sin、cos、exp 等。这些函数还对数组进行元素操作,生成数组作为输出。

 

注意: 我们上面使用重载运算符所做的所有操作都可以使用 ufunc 完成,例如 np.add、np.subtract、np.multiply、np.divide、np.sum 等。

 

# 在 numpy 中演示通用函数的 Python 程序 import numpy as np   # 创建一个正弦值数组 a = np.array([0, np.pi/2, np.pi]) print ("Sine values of array elements:", np.sin(a))   # exponential values a = np.array([0, 1, 2, 3]) print ("Exponent of array elements:", np.exp(a))   # square root of array values print ("Square root of array elements:", np.sqrt(a)) 

 

输出:

 

Sine values of array elements: [  0.00000000e+00   1.00000000e+00   1.22464680e-16] Exponent of array elements: [  1.           2.71828183   7.3890561   20.08553692] Square root of array elements: [ 0.          1.          1.41421356  1.73205081] 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70016646/viewspace-2942095/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专业区块项目开发团队:18028578624微電

注册时间:2022-04-13

  • 博文量
    158
  • 访问量
    95686