【数据分析常用库numpy】数据类型,数组属性及创建数组

numpy是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也为数组运算提供大量的函数库。包含

1、一个强大的n维数组对象

2、广播功能函数

3、整合 C/C++/Fortran 代码的工具

4、线性代数、傅里叶变换、随机数生成

ndarray对象是用来存放同类型元素的多维数组

ndarray的每一个元素在内存中都有一个相同大小的区域

ndarray包含以下内容:

1、一个指向数据(内存或内存映射文件中的一块数据)的指针。

2、数据类型或 dtype,描述在数组中的固定大小值的格子。

3、一个表示数组形状(shape)的元组,表示各维度大小的元组。

4、一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

ndarray内部结构

跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

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

参数说明:

object:数组或者嵌套的数列

dtype:数组元素的数据类型,可选

copy:对象是否需要复制,默认复制

order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)

subok:默认返回与基类类型一致的数组

ndmin:指定生成数组的最小维度

numpy数据类型

【数据分析常用库numpy】数据类型,数组属性及创建数组_第1张图片

【数据分析常用库numpy】数据类型,数组属性及创建数组_第2张图片

数组属性。numpy中比较重要的ndarray对象属性

【数据分析常用库numpy】数据类型,数组属性及创建数组_第3张图片

创建数组

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

numpy.empty(shape, dtype = float, order = 'C')

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

numpy.zeros(shape, dtype = float, order = 'C')

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

numpy.ones(shape, dtype = None, order = 'C')

【数据分析常用库numpy】数据类型,数组属性及创建数组_第4张图片

从已有的数组创建数组

numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。

numpy.asarray(a, dtype = None, order = None)

【数据分析常用库numpy】数据类型,数组属性及创建数组_第5张图片

一、打印一维数组

import numpy as np
from matplotlib import pyplot as plt

# 一维
a = np.array([1, 2, 3]); print(a) # [1 2 3]

二、打印等间隔数字的数组

b = np.arange(10); print(b) # [0 1 2 3 4 5 6 7 8 9]
b = np.arange(3,7,2); print(b) # [3, 5]

三、打印二维数组

c = np.array([[1, 2], [3, 4]]); print(c) 
# [[1 2]
#  [3 4]]

四、调整数组shape,将2行3列数组调整为3行2列

a = np.array([[1, 2, 3], [4, 5, 6]]); print(a); 
# [[1 2 3]
#  [4 5 6]]
a.shape = (3, 2); print(a)                      
# [[1 2]
#  [3 4]
#  [5 6]]

五、ndim:返回数组的维数

a = np.arange(24)
print(a)
print(a.ndim) # 1

六、numpy.reshape: 在不改变数据的条件下修改形状

b = a.reshape(3, 4, 2); #3代表分成三组、4代表每组4行,2代表每组2列(3*4*2=所有数据数量)
print(b)
print(b.ndim) # 3

七、空数组

x = np.empty([3, 2], dtype='i1'); print(x) # 生成3行2列的数组,数组x的元素为随机值,因为它们未初始化
#i1代表int8数据类型,i2代表int16,i4代表int32

八、含有5个0的数组,若不指定类型,则默认为float类型

x = np.zeros(5, dtype=np.int); print(x) # [0 0 0 0 0]

九、含有6个1的二维数组

x = np.ones([2, 3], dtype=int); print(x) 
# [[1 1 1]
#  [1 1 1]]

十、使用内置的range()函数创建列表对象

x = range(5); print(x) # range(0, 5)

十一、numpy.linspace,此函数类似于arange,在此函数中,指定了范围之间的均匀间隔数量,而不是步长

x = np.linspace(10, 20, 5); print(x) # [10. 12.5 15. 17.5  20.]

十二、# 算数运算:add加法, subtract减法, multiply乘法, divide除法, reciprocal倒数, power乘幂, mod取余 输入数组必须具有相同的形状或符合数组广播规则

a, b = [5, 6], [7, 10]
c = np.subtract(a, b); print(c) # [-2 -4]

十三、统计函数:用于从数组中给定的元素中查找最小,最大,百分标准差和方差等, amin最小值, amax最大值, ptp最大值与最小值的差, percentile计算一个多维数组的任意百分比分位数, median中位数, mean均值, average均值(可指定权重), std标准差

a = np.array([[1, 2, 3, 4, 5],[6,7,8,9,10]])
print(np.amin(a)) # 1
print(np.mean(a)) # 5.5
print(np.ptp(a)) #9
print(np.percentile(a,60)) #行列所有值的百分之60:6.3999999999999995
print(np.percentile(a,60,axis=0)) #表示在列上求,维度变为1维 [4. 5. 6. 7. 8.]
print(np.percentile(a,60,axis=1)) #表示在行上求,维度变为1维 [3.4 8.4]
print(np.percentile(a,60,axis=1,keepdims=True)) #keepdims=True表示维度不变
#[[3.4]
 #[8.4]]
print(np.median(a)) #中位数5.5
print(np.average(a,axis=0,weights=[1/4,3/4])) #均值可加权平均5.5
print(np.std(a)) #标准差

参考:https://www.runoob.com/numpy/numpy-array-from-numerical-ranges.html

你可能感兴趣的:(AI学习,AI学习)