文章目录

  • 1.概述
  • 2.数组基础
  • 2.1.数据标量类型
  • 2.2.数据结构化类型
  • 3.数组常用属性和方法
  • 4.创建数组
  • 5.作者答疑


1.概述

  NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:一个强大的N维数组对象 ndarray,广播功能函数,整合 C/C++/Fortran 代码的工具,线性代数、傅里叶变换、随机数生成等功能。numpy是python数字分析的基本套件之一。另外两个是SciPy(Scientific Python)和Matplotlib(绘图库)。

2.数组基础

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

序号

参数及描述

1

object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。

2

dtype 数组的所需数据类型,可选。

3

copy 可选,默认为true,对象是否被复制。

4

order C(按行)、F(按列)或A(任意,默认)。

5

subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。

6

ndmin 指定返回数组的最小维数。

2.1.数据标量类型

  NumPy 支持比 Python 更多种类的数值类型。 下表罗列了 NumPy 中定义的不同标量数据类型。

序号

数据类型及描述

1

bool_ 存储为一个字节的布尔值(真或假)

2

int_ 默认整数,相当于 C 的long,通常为int32或int64

3

intc 相当于 C 的int,通常为int32或int64

4

intp 用于索引的整数,相当于 C 的size_t,通常为int32或int64

5

int8 字节(-128 ~ 127)

6

int16 16 位整数(-32768 ~ 32767)

7

int32 32 位整数(-2147483648 ~ 2147483647)

8

int64 64 位整数(-9223372036854775808 ~ 9223372036854775807)

9

uint8 8 位无符号整数(0 ~ 255)

10

uint16 16 位无符号整数(0 ~ 65535)

11

uint32 32 位无符号整数(0 ~ 4294967295)

12

uint64 64 位无符号整数(0 ~ 18446744073709551615)

13

float_ float64的简写

14

float16 半精度浮点:符号位,5 位指数,10 位尾数

15

float32 单精度浮点:符号位,8 位指数,23 位尾数

16

float64 双精度浮点:符号位,11 位指数,52 位尾数

17

complex_ complex128的简写

18

complex64 复数,由两个 32 位浮点表示(实部和虚部)

19

complex128 复数,由两个 64 位浮点表示(实部和虚部)

2.2.数据结构化类型

  可以在numpy中定义结构化的数据类型,可用numpy中的dtype函数构建,调用方式如下:

numpy.dtype(object, align, copy)
参数为:
Object:被转换为数据类型的对象。Align:如果为true,则向字段添加间隔,使其类似 C 的结构体。
Copy: 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。

  以下示例定义名为 student 的结构化数据类型,其中包含字符串字段name,整数字段age和浮点字段marks。 此dtype应用于ndarray对象。

#int8,int16,int32,int64 可替换为等价的字符串 'i1','i2','i4',以及其他。
import numpy as np 
student = np.dtype([('name','U20'),  ('age',  'i1'),  ('marks',  'f4')])
stu_array = np.array([('张三',  21,  50),('李四',  18,  75)], dtype = student)
print(stu_array);

3.数组常用属性和方法

  1.ndarray.shape:它返回一个包含数组维度的元组,它也可以用于调整数组大小。
  2.ndarray.reshape() :它也是用来调整数组大小。与2.1的区别在于它返回一个调整shape后的数据结果,而原始数组本身没有改变。改变shape之后元素的个数不能改变,否则会报错。
  3.ndarray.ndim:它返回数组的维数。范例代码如下所示:

import numpy as np 
a = np.array([[1,2,3],[4,5,6]])
print(a.shape)
a.shape = (3,2)
print(a.shape)
b=a.reshape(2,3);
print(b)
print(b.ndim);#结果:2

4.创建数组

  NumPy提供了灵活多样的构建数组的方式,empty函数创建指定形状和dtype的未初始化数组;zeros函数创建指定形状和dtype的零值数组;ones函数创建指定形状和dtype的一值数组;范例代码如下所示:

import numpy as np 
empty_array=np.empty((3,2),dtype=np.int);
ones_array=np.ones((3,2),dtype=np.int);
zeros_array=np.zeros((3,2),dtype=np.int);
eye_array=np.eye(3,dtype=np.int);#第一个必须为整数

  另外一个从普通python可迭代数据对象中转入数据的函数是numpy.asarray。它与numpy.array类似。调用形式如下:
  numpy.asarray(a, dtype = None, order = None)
  a:任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表
  dtype:通常,输入数据的类型会应用到返回的ndarray
  order:'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组
【注意】从一维数组构建二维数组时注意元素个数对齐,否则构建为一维数组元组(列表)对象,采用二维索引时会报错。

5.作者答疑

如有疑问,敬请留言。