欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-01 18:56:52
...

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数据类型

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

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

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

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

创建数组

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】数据类型,数组属性及创建数组

从已有的数组创建数组

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

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

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

一、打印一维数组

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学习