栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Python数据分析之Numpy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python数据分析之Numpy

    Numpy在科学计算上的性能远高于List,且有丰富的科学计算函数.numpy支持大量高维度数组与矩阵运算。NumPy的主要对象是多维数组 Ndarray。在NumPy中维度Dimensions叫做轴Axes,轴的个数叫做秩Rank。
Ndarray对象的常用创建方式
import numpy as np
x = np.empty([3, 2])  # 创建一个指定形状数据类型的未初始化的数组
x1 = np.zeros([3, 2])  # 以0填充新数组
x2 = np.ones([3, 2], dtype=int)  # 以1填充新数组
x3 = np.full((2, 2), 4)  # 以指定数填充数组
x4 = np.random.random((1, 3))  # 创建随机数组
x5 = np.random.randn(2, 3)  # 创建标准正态分布数组
x6 = np.random.randint(10, 20, (3, 4))  # 创建随机分布的整数型数组
x7 = np.arange(10)  # 从数值范围创建数组 arange(start,stop,step,dtype)
x8 = np.asarray([1, 2, 3, 4])  # 从已有数组创建数组
x9 = list(range(100))  # 使用迭代器创建数组
it = iter(x9)
x10 = np.fromiter(it, dtype=float)
# 创建一维等差数列数组    np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#                       endpoint参数为是否显示stop,默认不显示,restep参数为是否显示间隔
x11 = np.linspace(10, 20, 5, endpoint=True)

# 创建一维等比数列数组    np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
#                       base参数为对数log的底数,默认为10
x12 = np.logspace(0, 9, 10, base=2)

创建numpy数组时的可选参数一般包括:

  • dtype:数组元素的数据类型,可选值参考NumPy 数据类型 | 菜鸟教程 (runoob.com) ,默认为float
  • copy:数组对象是否需要复制,可选值True/False
  • order:创建数组的样式,C为行有限,F为列优先,A为任意
  • ndmin:指定生成的数组的最小维度
Ndarray数组对象的常见属性
"""
            ndarray.ndim	    秩,即轴的数量或维度的数量
            ndarray.shape	    数组的形状,对于矩阵,n行m列
            ndarray.size	    数组元素的总个数,相当于 .shape中 n*m 的值
            ndarray.dtype	    ndarray对象的元素类型
            ndarray.itemsize	ndarray对象中每个元素的大小,以字节为单位
            ndarray.flags	    ndarray对象的内存信息
            ndarray.real	    ndarray元素的实部
            ndarray.imag	    ndarray元素的虚部
            ndarray.data	    包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以                                        
                                通常不需要使用这个属性。
"""
Numpy的常见操作 一.改变数组形状:
x = np.array([[1, 2, 3, 4, 5, 6]])
# 方式1
x = np.array([[1, 2, 3, 4, 5, 6]], ndim=3)
# 方式2
x.reshape(2,3)    # 返回一个新的数组
# 方式3
x.resize(2,3)    # 原地改变形状
# 方式4
x.shape=(2,3)    # 原地改变形状

 二.展平数组
# 方式1
x.reshape(-1)    # 返回一个新的数组
# 方式2
x.ravel()    # 返回一个新的数组
三.数组元素求和
np.sum(x)    # x中所有元素的和
np.sum(x,axis=0)    # 求每一列的和,返回一维数组
np.sum(x,axis=1)    # 求每一行的和,返回一维数组
四.数组元素求平均值
np.mean(x)    # 求所有元素的平均值
np.mean(x,axis=0)    # 求每一列的平均值
np.mean(x,axis=1)    # 求每一行的平均值
五.数组的连接
x=[[1,2,3][4,5,6]]
y=[[7,8,9][10,11,12]]
np.concatenate((x,y))    # 默认按每一列连接即axis=0
np.concatenate((x,y),axis=1)    # 按行连接
 六.数组的去重
np.unique([1,2,3,4,1,1,2,2,3,3,4,4,5,6,7,8])    # 给定数组不是一维会被强行展开成为一维
七.数组的增删和改
np.append(x,[1,2,3])    # 在给定数组的末尾追加值,始终返回一维数组,可选参数axis(有此参数则两个数组维度必须相同)
np.insert(x,index,value)    # 在给定数组的index位置插入指定value,可选参数axis(两个数组维度必须相同)
np.delete([x,[1,2])  # 返回从输入数组中删除指定子数组的新数组。与insert()函数的情况一样,如果未提供轴参数,则输入数组将展开。

 八.数组的线性代数操作
np.inner(np.array([1,2,3,4]), np.array([1,2,3,4]))    # 两个一维数组的内积
x.dot(y.reshape(3,2))    # 矩阵乘法,第一个矩阵的列=第二个矩阵的行
x.T    # 矩阵的转置方式1,返回新矩阵
x.transpose    # 矩阵的转置方式2,返回新矩阵
np.linalg.inv(np.arange(4).reshape(2, 2))    # 矩阵的逆(行列相等才能求逆)
 九.其他操作
np.argsort(x)    # 排序矩阵,返回排序索引数组
np.argsort(x,axis=0)    # 沿行(默认)
np.argsort(x,axis=1)    # 沿列
np.tile(x,(2,3))    # 把原数组作为一个整体变为所给的元组形状
# 迭代每个标量元素
for i in np.nditer(x):
    print(x)
Ndarray数组的索引与切片
# 切片操作
x = np.arange(10)
y = np.arange(16).reshape(4, 4)
print(slice(1, 9, 2))
print(x[1:9:2])
print(x[1:])
print(x[:-1])
print(y[..., 1])  # 切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。
print(y[2:, ...])   # ,被用来分割维度

# 索引操作
a = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12]])
print(a[1,2])   # 取某个确定值
print(a[-2:,1:3])   # 取某个范围值
a[np.arange(3),1]+=10   # 对a的某部分值进行运算
print(a > 10)   # 获取数组中大于或小于某个确定值的数值
print(a[a>10])

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号