创建二维数组java 创建二维数组numpy_c++ fill 二维数组初始化


机器学习的最基础模块就是numpy模块了,而numpy模块中的数组操作又是重中之重,所以我们今天主要介绍数组的创建方法。

一、创建数组

  • numpy.empty

numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')//shape数组形状//dtype数据类型,可选//order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。//创建空数组import numpy as np x = np.empty([2,3], dtype = int) print (x)//输出[[ 3458764513820540928 -9223363249997890790  4207488256838926340] [ 4640128614720080996   604961579779425155   189479273602761376]]

数组元素为随机值,因为它们未初始化。

  • numpy.zeros

创建指定大小的数组,数组元素以 0 来填充

注意:默认是 float 类型的

numpy.zeros(shape, dtype = float, order = 'C')//shape数组形状//dtype数据类型,可选//order'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组import numpy as np # 默认为浮点数x = np.zeros(5) print(x) # 设置类型为整数y = np.zeros((5,), dtype = np.int) print(y) # 自定义类型z = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])  print(z)#输出[0. 0. 0. 0. 0.][0 0 0 0 0][[(0, 0) (0, 0)] [(0, 0) (0, 0)]]

对比:

empty() 方法和 zeros() 方法不同,不会将数组值设置为零,因此可能会略微加快。另一方面,它要求用户手动设置数组中的所有值,并应谨慎使用。

  • numpy.ones

创建指定形状的数组,数组元素以 1 来填充:

numpy.ones(shape, dtype = None, order = 'C')//shape数组形状//dtype数据类型,可选//order'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组import numpy as np# 默认为浮点数x = np.ones(5) print(x) # 自定义类型x = np.ones([2,3], dtype = int)print(x)#输出结果为:[1. 1. 1. 1. 1.][[1 1 1] [1 1 1]]
  • numpy.full

返回给定维度和类型的新数组,填充 fill_value

numpy.full(shape, fill_value, dtype=None, order='C')//shape返回数组的维度//fill_value填充值//dtype返回数组的数据类型,默认值 None 指:np.array(fill_value).dtype//order在计算机内存中的存储元素的顺序,只支持 'C'(按行)、'F'(按列),默认 'C'import numpy as npa = np.full((2, 3), 9)print(a)#输出:[[9 9 9] [9 9 9]]


创建二维数组java 创建二维数组numpy_创建二维数组java_02


二、从已有的数组创建数组

  • numpy.asarray
numpy.asarray(a, dtype = None, order = None)//a任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组//dtype数据类型,可选//order可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。#将列表转换为 ndarray:import numpy as np x =  [1,2,3,4] a = np.asarray(x)  print (a)#输出结果为:[1  2  3 4]#将元组转换为 ndarray:import numpy as np  x =  (1,2,3,4) a = np.asarray(x)  print (a)#输出结果为:[1  2  3 4]#将元组列表转换为 ndarray:import numpy as np  x =  [(1,2,3),(4,5)] a = np.asarray(x)  print (a)#输出结果为:[(1, 2, 3) (4, 5)]#设置了 dtype 参数:import numpy as np  x =  [1,2,3] a = np.asarray(x, dtype =  float)  print (a)#输出结果为:[ 1.  2.  3.]
  • numpy.frombuffer

numpy.frombuffer 用于实现动态数组。

numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)//buffer 实现了 __buffer__ 方法的对象//dtype返回数组的数据类型,可选//count读取的数据数量,默认为-1,读取所有数据。//offset读取的起始位置,默认为0。import numpy as np #buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。s =  b'Hello World' a = np.frombuffer(s, dtype =  'S1')  print (a)#输出结果为:[b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']
  • numpy.fromiter

numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。

numpy.fromiter(iterable, dtype, count=-1)//iterable可迭代对象//dtype返回数组的数据类型//count读取的数据数量,默认为-1,读取所有数据import numpy as np  # 使用 range 函数创建列表对象  list=range(5)it=iter(list)# 使用迭代器创建 ndarray x=np.fromiter(it, dtype=float)print(x)#输出结果为:[0. 1. 2. 3. 4.]


创建二维数组java 创建二维数组numpy_数组_03


三、从数值范围创建数组

  • numpy.arange

numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)//根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。//start起始值,默认为0//stop终止值(不包含)//step步长,默认为1//dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。#生成 0 到 5 的数组:import numpy as np x = np.arange(5)  print (x)#输出结果如下:[0  1  2  3  4]#设置返回类型位 float:import numpy as np # 设置了 dtypex = np.arange(5, dtype =  float)  print (x)#输出结果如下:[0.  1.  2.  3.  4.]#设置了起始值、终止值及步长:import numpy as npx = np.arange(10,20,2)  print (x)#输出结果如下:[10  12  14  16  18]
  • numpy.linspace

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)//start序列的起始值//stop序列的终止值,如果endpoint为true,该值包含于数列中//num要生成的等步长的样本数量,默认为50//endpoint该值为 true 时,数列中包含stop值,反之不包含,默认是True。//retstep如果为 True 时,生成的数组中会显示间距,反之不显示。//dtypendarray 的数据类型#以下实例用到三个参数,设置起始点为 1 ,终止点为 10,数列个数为 10。import numpy as npa = np.linspace(1,10,10)print(a)#输出结果为:[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]#设置元素全部是1的等差数列:import numpy as npa = np.linspace(1,1,10)print(a)#输出结果为:[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]#将 endpoint 设为 false,不包含终止值:import numpy as np a = np.linspace(10, 20,  5, endpoint =  False)  print(a)#输出结果为:[10. 12. 14. 16. 18.]#如果将 endpoint 设为 true,则会包含 20。以下实例设置间距。import numpy as npa =np.linspace(1,10,10,retstep= True) print(a)b =np.linspace(1,10,10).reshape([10,1])print(b)#输出结果为:(array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.]), 1.0)[[ 1.] [ 2.] [ 3.] [ 4.] [ 5.] [ 6.] [ 7.] [ 8.] [ 9.] [10.]]
  • numpy.logspace

numpy.logspace 函数用于创建一个于等比数列。格式如下:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)//start序列的起始值为:base ** start//stop序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中#num要生成的等步长的样本数量,默认为50#endpoint该值为 true 时,数列中中包含stop值,反之不包含,默认是True。#base对数 log 的底数。dtypendarray 的数据类型实例import numpy as np# 默认底数是 10a = np.logspace(1.0,  2.0, num =  10)  print (a)输出结果为:[ 10.           12.91549665     16.68100537      21.5443469  27.82559402        35.93813664   46.41588834     59.94842503      77.42636827    100.    ]将对数的底数设置为 2 :实例import numpy as npa = np.logspace(0,9,10,base=2)print (a)输出如下:[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]