python-numpy库

这篇博客介绍了NumPy库的基础用法,包括创建一、二、三维数组,数组属性,类型转换,生成特定数值数组,数组索引,形状修改,类型修改,数组去重,逻辑和统计运算等。还展示了如何使用matplotlib进行数据可视化,如绘制正态分布直方图。
摘要由CSDN通过智能技术生成


前言

本文为学习笔记



一、导入的库

import matplotlib.pyplot as plt
import numpy as np
import random


二、使用

1.创建数组

	#一维
	np.array([1,2,3])
	#二维
    score = np.array([[1,2,3],
                     [3,4,5],
                     [6,7,8]])
    print(score)
    #三维
    np.array([[[1,2,3],
	         [3,4,5],
	         [6,7,8]],
	         [[1,2,3],
	         [3,4,5],
	         [6,7,8]]])
    

2.ndarray属性

    #创建数组
    score = np.array([[[1,2,3],
                     [3,4,5],
                     [6,7,8]],
                     [[1,2,3],
                     [3,4,5],
                     [6,7,8]]])

    #几行几列
    print(score.shape)
    #数组维数
    print(score.ndim)
    #元素里面多少个数据
    print(score.size)
    #返回字节长度
    print(score.itemsize)
    #类型
    print(score.dtype)

3.ndarray的类型

	#修改类型
    #浮点
    a= np.array([[1,2,3],
             [3,4,5],
             [6,7,8]],dtype=np.float32)
    print(a.dtype)
    #字符串
    a= np.array([['w','2','3'],
             ['3','4','5'],
             ['6','7','8']],dtype=np.string_)
    print(a.dtype)

4.生成数组

  • 生成0,1数组

    #生成0,1数组
    zero0 = np.zeros([1,2])     #一行两列
    one1 = np.ones([4,8])       #四行八列
    print(zero0,one1)
    zero2 = np.zeros_like(one1)         #转换
    print(zero2)

  • 从现有数组生成 array(深拷贝)和asarray(浅拷贝)

    #从现有数组生成    array(深拷贝)和asarray(浅拷贝)的区别:
    a = np.array([[1,2,3],[4,5,6]])
    a1 = np.array(a)
    a2 = np.asarray(a)
    print(a1,a2)
    a[0,0] = 100
    print(a,a1,a2)
  • 生成固定范围内的数组

    b  = np.linspace(0,100,11)      #生成0~100范围11个间隔的数据
    print(b)
    b2 = np.arange(0,100,11)        #生成0~100范围且距离为11的所有数据
    print(b2)
    b3 = np.logspace(0,3,4)         #4/4X10的0次方 4/4X10的1次方 4/4X10的2次方 4/4X10的4次方 == 10的零次方~10的3次方生成4个等间隔的数字
    print(b3)
  • 生成随机数组

    c = np.random.rand(2,3)                #返回0-1内一组均匀分布的数据 两行三列
    print(c)
    c2 = np.random.uniform(low=1,high=10,size=(2,3))    #返回1-10之间均匀分布的两行三列数据
    print(c2)
    c3 = np.random.randint(1,10,(2,3))          #返回1-10均匀分布的整数数组 两行三列
    print(c3)
  • 正态分布创建 输入值:均值 标准差 生成的数据数量

    d = np.random.normal(1.75,1,1000000000)
    # print(d)
    plt.figure(figsize = (10,10),dpi=100)       #1创建画布
    plt.hist(d,bins=1000)                      # 2.绘制图形
    plt.show()
  • 例子

    c4 = np.random.uniform(-1,1,100000000)
    print(c4)
    plt.figure(figsize = (10,10),dpi=100)       #1创建画布
    plt.hist(c4,bins=1000)                      # 2.绘制图形
    plt.show()                                  #展示

5.数组索引

    #直接索引 先行后列
    a = np.array([[[1,2,3],[3,4,5]],[[5,6,7],[7,8,90]]])
    print(a)
    print(a[0,0,0])         #第一组里第一个里的第一个数据

6.形状,行列,类型修改reshape/resize/T/normal

  • 形状修改

    b = np.random.normal(0, 1, (4, 5))
    print(b)
  • 行列修改

    b2 = b.reshape(-1,10)       #改成10列 行数自适应
    print(b2)
    b.resize([5,4])           #改成五行四列 数据是把所有数据平铺后重新排列 是对原数据进行修改 没有返回值
    print(b)
    b3 = b.T                    #行转列 列转行
    print(b3)
  • 类型修改astype/tostring

    c = b.astype(np.int32)          #转各种
    print(c)
    c2 = c.tostring()               #转字符串
    print(c2)

7.数组去重unique

    a = np.array([[1,2,3],[1,2,3],[1,2,3]])     #数据
    a1 = np.unique(a)                           #去重
    print(a1)

8.ndarray的运算

  • 逻辑运算

    a = np.random.normal(0,1,(8,10))
    print(a)
    a2 = a[0:5,0:5]
    print(a2)

    print(a2>1)         #大于1的值 返回T F

    a2[a2>1] = 2        #让大于1的值=2
    print(a2)
  • 判断

    #判断
    b = a[0:5,0:3]
    b2 =np.all(b>0)         #全为真 为真
    print(b2)
    b3 = np.any(b>0)        #有为真 为真
    print(b3)
  • where三元运算符 满足要求赋值第一个值 不满足赋值第二个值

    #where三元运算符 满足要求赋值第一个值 不满足赋值第二个值
    c = b
    print(c)
    c1 = np.where(c>0,1,0)      #真为1,假为0
    # print(c1)
    c2 = np.where(np.logical_and(c>-1,c<2),1,0)         #与
    # print(c2)
    c3 = np.where(np.logical_or(c>-0.2,c>0),1,0)        #或
    print(c3)
  • 统计运算

    d = np.random.normal(0,1,(5,4))
    print(d)
    d1 = d.max()                    #最大值
    print(d1)
    d11 = d.max(axis=1)             #axis=1每行的最大值 axis=0为每列的最大值
    print(d11)
    d2 = d.min()                    #min
    print(d2)
    d3 = d.argmax(axis=1)           #axis=1每一行的最大值的下标 axis=0为每列的最大值
    print(d3)

9.数组之间的运算

  • + - x / 数组和数字 数组和数组

    #+ - x / 数组和数字 数组和数组
    a= np.array([1, 2, 3, 4])
    print(a + 1)
    print(a / 2)
    a2 = np.array([[1, 2, 3, 4, 5], [1, 3, 4, 6, 7]])
    a3 = np.array([[2], [3]])
    print(a2 + a3)

  • 统计运算

   #矩阵乘法 点乘
    b = np.array([[1,2],
                 [2,3],
                 [3,4],
                 [4,5],
                 [5,6],
                 [6,7]])
    b2 = np.array([[9],[8]])
    b3 = np.matmul(b,b2)        #matmul相乘 不支持矩阵和数字的相乘
    print(b3)
    b4 = np.dot(b,b2)           #点乘
    print(b4)
    #区别
    b5 = np.dot(b,10)
    print(b5)


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!小白菜!y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值