一.蛮力构造法

描述

蛮力构造法使用numpy.array()函数来创建数组

用法和参数

np.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

  • object:必选,为一个序列型对象
  • dtype:可选,用于指定数组元素的数据类型
  • copy:可选,用于设置是否需要复制对象
  • order:可选,用于指定创建数组的样式
  • subok:可选,默认返回一个与基类的类型一致的数组
  • ndmin:可选,用于指定生成数组的最小纬度

实例

import numpy as np
# 创建2行3列数组
a = np.array([[1, 2, 3], [4, 5, 6]])
# 创建2行3列8位无符号整形数组
b = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.uint8)

二.特殊数值法

描述

特殊数值指的是0、1、空值。特殊数值法适合构造全0、全1、空数组,或由0、1组成的类似单位矩阵(主对角线为1,其余为0)的数组

用法和参数

np.zeros(shape, dtype=float, order=‘C’)
np.ones(shape, dtype=float,order=‘C’)
np.empty(shape, dtype=float, order=‘C’)
np.eye(N, M=None, k=0, dtype=float, order=‘C’)

  • shape:表示生成的数组结构
  • dtype:用于指定数据类型(默认浮点型)
  • order:指定数组在内存中的存储顺序
  • C:表示C语言使用的行优先方式
  • F:表示Fortran语言使用的列优先方式

实例

np.zeros(6)
np.zeros((2, 3))
np.ones((2, 3), dtype=np.int)
np.empty((2, 3))
np.eye(3, dtype=np.uint8)
# 生成3行4列初始值都是255的无符号整形数组
a = np.empty((3, 4), dtype=np.uint8)
a.fill(255)
a

三.随机数值法

描述

随机数值法创建数组主要就是使用random子模块

用法和参数

  • np.random.random(size=None)
  • 用于生成[0,1)区间内的随机浮点型数组
  • size:用于指定说呢过程数组的结构
  • np.random.randint(low, high=None, size=None)
  • 用于生成[low, high) 区间内的随机整形数组
  • size:用于指定说呢过程数组的结构
  • np.random.normal(loc=0.0, scale=1.0, size=None)
  • 用于生成以loc为均值、以scale为标准差的正态分布数组
  • size:用于指定说呢过程数组的结构

实例

np.random.random(3)
np.random.random((2, 3))
np.random.randint(1, 5, size=(2, 3))
# 导入绘图模块
import matplotlib.pyplot as plt
# 生成正态分布数据
tall = np.random.normal(170, 4, 1000)
# 从156厘米到190厘米,每2厘米一个分段
bins = np.arange(156, 190, 2)
# 绘制柱状图
plt.hist(tall, bins)
# 显示图形
plt.show()

四.定长分割法

描述

定长分割法最常用的函数是arange()和linspace()

用法和参数

np.arange(start, stop, step, dtype=None) np.linspace(start, stop,
num=50, endpoint=True, retstep=False, dtype=None)

实例

  • arange()函数
np.arange(5)
np.arange(5, 11)
np.arange(5, 11, 2)
np.arange(5.5, 11, 1.5)
np.arange(3, 15).reshape(3, 4)
  • linspace()函数
# 返回0到5之间的5个等距数值,包括0到5
np.linspace(0, 5, 5)
# 返回5个等距数值,包括0但不包括5
np.linspace(0, 5, 5, endpoint=False)

五.重复构造法

描述

根据特定的规则对已有数组不断重复,从而生成新的数组。重复构造法主要使用repeat()和tile()这两个函数

用法和参数

repeat():用来重复数组元组
tile():将整个数组而非数组元素水平和垂直重复指定的次数

实例

  • repeat()
a = np.arange(5)
# 重复一维数组元素3次
np.repeat(a, 3)
a = np.arange(6).reshape(2, 3)
# 重复二维数组3次,不指定轴
np.repeat(a, 3)
# 重复二维数组3次,指定0轴
np.repeat(a, 3, axis=0)
# 重复二维数组3次,指定1轴
np.repeat(a, 3, axis=1)
  • tile()函数
a = np.arange(5)
# 重复一维数组3次
np.tile(a, 3)
# 重复一维数组3行2列
np.tile(a, (3, 2))
a = np.arange(6).reshape((2, 3))
# 重复二维数组3次
np.tile(a, 3)
# 重复二维数组2行3列
np.tile(a, (2, 3))

六.网格构造法

描述

生成二维经纬度网格的常用函数是np.meshgrid(),该函数以一维经度数组lon和一维维度数组lat为参数,返回二维的经度数组和维度数组

实例

  • 使用meshgrid()函数构造经纬度网格
# 精度为10,共计37个经度点
lon = np.linspace(-180, 180, 37)
# 精度为10, 共计19个维度点
lat = np.linspace(90, -90, 19)
lat
lons, lats = np.meshgrid(lon, lat)
lons.shape
lats.shape
  • 使用mgrid()函数构造经纬度网格
# 用实数指定网格精度为5
lots, lons = np.mgrid[90:-91:-5, -180:181:5]
lons.shape, lats.shape
# 用虚数指定分割点数
lats, lons = np.mgrid[90:-91:37j, -180:180:73j]
lons.shape, lats.shape

七.自定义数据类型

np.array(['Anne', 1.70, 55])
mytype = np.dtype([('name', 'S32'), ('tall', np.float), ('bw', np.int)])
np.array([('Anne', 1.70, 55)], dtype=mytype)