生成Numpy

Numpy的核心特征之一就是N-维数组对象——ndarray。ndarray是Python中一个快速。灵活的大型数据集容器。数组允许你使用类似于标量的操作语法在整块数据上进行数据计算。

为了让大家感受下Numpy,首先导入Numpy,再生成一个小的随机数组:

import numpy as np
#生成随机数组
data = np.random.rand(2,3)

data
array([[0.91666618, 0.65477897, 0.47119754],
       [0.01575175, 0.54662481, 0.02147491]])

我们可以给data加上一个数学操作:

data * 10
array([[9.16666176, 6.54778974, 4.71197543],
       [0.15751747, 5.46624805, 0.21474909]])

data + data
array([[1.83333235, 1.30955795, 0.94239509],
       [0.03150349, 1.09324961, 0.04294982]])

(Numpy的导入方式import numpy as np 。当然也可以在代码中使用**from numpy import *** 来省略多写的一个np,建议使用标准导入的导入方式。)

一个ndarray是一个通用的多维同类数据容器,也就是说,它包含的每一个元素均为相同类型。每一个数组都有一个shape属性,用来表征数组每一维度的数量,每一个数组都有一个dtype属性,用来描述数据的 数据类型

data.shape
(2, 3)

data.dtype
dtype('float64')

当你看到“数组”、“Numpy数组”或“ndarray”时,他们都表示同一个对象:ndarray对象。

生成数组最简单的方式就是使用array函数 。array函数接收任意的序列型对象(当然也包括其他的数组),生成一个新的包含传递数据的Numpy数组。例如,列表的转换就是一个好例子:

data1 = [6,7.5,8,0,1]

arr1 = np.array(data1)

arr1
array([6. , 7.5, 8. , 0. , 1. ])

嵌套序列,例如同等长度的列表,将会自动转换成多维数组:

data2 = [1,2,3,4],[5,6,7,8]

arr2 = np.array(data2)

arr2
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

因为data2是一个包含列表的列表,所以Numpy数组arr2形成了一个二维数组。我们可以通过检查ndimshape属性来确认这一点:

arr2.ndim
2

arr2.shape
(2, 4)

除非显示地指定,否则np.array会自动推断生成的数据类型。数据类型被储存在一个特殊的元数据dtype中。例如:

arr1.dtype
dtype('float64')

arr2.dtype
dtype('int32')

除了np.array,还有很多其他函数可以创建新数组。例如,给定长度及形状后,zeros可以一次性创造全0数组,ones可以一次性创造全1数组。empty则可以创建一个没有初始化数值的数组。想要创建高维数组,则需要为shape传递一个元组:

np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

np.zeros((3,6))
array([[0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.]])

np.empty((2,3,2))
array([[[0., 0.],
        [0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.],
        [0., 0.]]])

使用np.empty来生成一个全0数组,并不安全,有些时候它可能会返回未初始化的垃圾数值。

arange是Python内建函数range的数组版:

np.arange(15)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])

下列是数组生成函数:

  • array :将输入数据(可以是列表、元组、数组以及其他序列)转换为ndarray,如不显式指明数据,将自动推断,默认复制所有的输入数据。
  • asarray :将输入数据转换为ndarray,但如果输入以及是ndarray则不再复制。
  • arange :Python内建函数range的数组版,返回一个数组。
  • ones :根据给定形状和数据类型生成全1数组。
  • ones_like :根据所给的数组生成一个形状一样的全1数组。
  • zeros :根据给定形状和数据类型生成全0数组。
  • zeros_like :根据所给的数组生成一个形状一样的全0数组。
  • empty :根据给定形状生成一个没有初始化数值的空数组。
  • empty_like :根据所给的数组生成一个形状一样但没有初始化数值的空数组。
  • full :根据给定形状和数据类型生成指定数值的数组。
  • full_like :根据所给的数组生成一个形状一样但内容是指定数值的数组。
  • eye,identity :生成一个N * N特征矩阵(对角线位置都是1,其余位置是0)

猜你喜欢

转载自blog.csdn.net/qq_41205111/article/details/86617474