python机器学习之八 numpy库之数组(创建数组、查看数组属性、创建特殊类型的多维数组)

NumPy

  NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy运算效率极好,是大量机器学习框架的基础库。

 使用numpy库中的函数前,需使用import关键字引入numpy库,本博客采用以下方式引入numpy:

import numpy as np

  引入numpy库,并重命名为np,通过np.使用numpy中的函数。

本篇主要介绍numpy中的数组操作:

  1. 创建数组
  2. 查看数组属性
  3. 创建特殊类型的多维数组
  • 创建数组

数组:所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。(参考:https://baike.baidu.com/item/数组/3794097?fr=aladdin)

使用numpy下的array方法创建数组

①列表转换数组

#导入numpy包
import numpy as np
# 创建简单的列表
a = [1, 2, 3, 4]
# 将列表转换为数组
b = np.array(a)
print(b)
#array([1, 2, 3, 4])

②直接创建数组

import numpy as np
c=np.array([[1,2,3],[4,5,6]])  # 创建2*3维数组  
print(c) 
''' array([[1,2,3],
          [4,5,6]])
'''
  • 查看数组属性

.size :元素个数

.shape:数组维数信息

.ndim:维数

.dtype :数组元素类型

.itemsize:每个元素所占用的字节数目,创建数组时,即可指定元素类型,有如下常用类型:

  np.int16、  np.int32、  np.float32、  np.float64

  如:

c=np.array([[1,2,3],[4,5,6]],dtype=np.int16)  # 创建2*3维数组  array([[1,2,3],[4,5,6]])

例:

import numpy as np
# 创建简单的列表
a = [1, 2, 3, 4]
# 将列表转换为数组
b = np.array(a) # b:array([1, 2, 3, 4])
b.shape  # 维数信息:(4,)
b.dtype.name   # 'int32'
b.size   # 元素个数:3
b.itemsize  #每个元素所占用的字节数目:4
b.ndim #维数 1维
c=np.array([[1,2,3],[4,5,6]],dtype=np.int16)  # 创建2*3维数组  array([[1,2,3],[4,5,6]])
c.shape  # 维数信息:2,3)表示该数组为2 X 3维
c.size   # 元素个数:6
c.itemsize   # 每个元素所占用的字节数目:2
c.ndim  # 维数:2

 

 

  • 创建特殊类型的多维数组

常用的多维数组类型:

zeros、ones、empty、arange、linspace、eye、random.rand、random.normal

 

zeros:创建数组元素全为0的数组

np.zeros(shape,dtype = None)

shape:生成数组的维度

dtype:输出数组的类型

a1 = np.zeros((3,4), dtype=np.int16)    # 创建3*4全零二维数组
'''
输出:
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
	   '''
a1.dtype.name   # 元素类型:'int16'
a1.size  # 元素个数:12
a1.itemsize  # 每个元素所占用的字节个数:8

ones::建数组元素全为1的数组

np.ones(shape,dtype = None)

shape:生成数组的维度

dtype:输出数组的类型

a2 = np.ones((2,3,4), dtype=np.int16)  # 创建2*3*4全1三维数组
a2 = np.ones((2,3,4), dtype='int16')     # 创建2*3*4全1三维数组
'''
输出:
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],
 
       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]], dtype=int16)'''

empty:创建未初始化的二维数组,数组中包含的数字全为无意义的数值

a3 = np.empty((2,3))  # 创建2*3的未初始化二维数组,包含的均是无意义的数值

arange:

arange(start, stop, step, dtype = None)在给定间隔内返回均匀间隔的值。

start —— 开始位置,数字,可选项,默认起始值为0
stop —— 停止位置,数字
step —— 步长,数字,可选项, 默认步长为1,如果指定了step,则还必须给出start。
dtype —— 输出数组的类型。 如果未给出dtype,则从其他输入参数推断数据类型。

例:

a4 = np.arange(10,30,5)   # 初始值10,结束值:30(不包含),步长:5
'''
输出:array([10, 15, 20, 25])
'''
a5 = np.arange(0,2,0.3)    # 初始值0,结束值:2(不包含),步长:0.2
'''
输出:array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])
''' 
a6 = np.arange(6)#初始值默认0 步长默认1
'''
输出:
array([0, 1, 2, 3, 4, 5])
'''

linspace:

linspace(start, stop, nums, dtype = None),生成在指定间隔内,指定元素个数的等差数列数组。

start —— 开始位置,数字
stop —— 停止位置,数字
nums—— 元素个数,数字。
dtype —— 输出数组的类型。 如果未给出dtype,则从其他输入参数推断数据类型。

例:

np.linspace(0, 2, 9)   # 初始值0,结束值:2(包含),元素个数:9
'''
输出:
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])
'''

eye

eye(n):生成n*n的单位数组

np.eye(2)
'''
array([[1., 0.],
       [0., 1.]])
'''

random.rand
random.normal

补充:

np.random.uniform(0, 100)#创建指定范围内的一个数
np.random.randint(0, 100)#创建指定范围内的一个整数

random.rand(shape):创建指定形状的数组(范围在0至1之间)

shape:数组维数

np.random.random((3, 3))
#输出3*3数组,数组元素值在0~1之间

random.normal(loc,scale,size) :生成给定均值/标准差/维度的正态分布数组

参数loc(float):正态分布的均值,
参数scale(float):正态分布的标准差。
参数size(int 或者整数元组):输出的值赋在shape里,默认为None

np.random.normal(1.75, 0.1, (2, 3))

补充:

使用reshape方法改变数组维度

a = np.arange(6)#初始值默认0 步长默认1
'''
输出:
array([0, 1, 2, 3, 4, 5])
'''
print(a.reshape(2,3))
'''
[[0 1 2]
 [3 4 5]]
'''

b = np.arange(12).reshape(4,3)
'''
输出:
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
	   '''
c = np.arange(24).reshape(2,3,4)
'''
输出:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
 
       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]]) 
		'''
		
'''		

 

你可能感兴趣的:(python学习,由浅入深掌握神经网络))