当前位置: 首页 > article >正文

yjs07——numpy数组的使用

1.一维二维三维数组的创建:

一维数组:a1=np.array([1,2,3])

二维数组:a2=np.array([  [1,2,3],[3,4,5]  ])

三维数组:a3=np.array([ [ [1,2,3],[3,4,5]]

                                         [ [0,1,2],[0,7,5] ]  ])

2.数组的属性查看

        1.数组的维度:arr.ndim           2.数组的形状:arr.shape             3.数组的尺寸:arr.size

        4.数组的类型:arr.dtype          5.数组元素的大小:arr.itemsize

        #没有括号!

3.数组的创建:

        A.创建0数组;创建1数组

                arr=np.ones(shape=(“张”数,行数,列数))

                arr=np.zeros(shape=(..,..,..))

                arr=np.like_ones(arr_1)

                arr=np.like_zeros(arr_1)

        B深浅拷贝

              深拷贝(复制):arr2=np.array(arr1)

              浅拷贝(快捷方式):arr2=np.asarray(arr1)  #浅拷贝在a1发生变化时,a2也变化

        C.间隔创建

                arr=np.linspace(起始值,末,最后组数nendpoint=True/False)

              // endpoint表示是否包括最后一个数

k=np.linspace(0,11,3,endpoint=True)
print(k)
#结果:[ 0.  5.5  11. ]

                arr=np.arange(起始值,末,间隔个数,endpoint=)

        D.均匀分布数

                arr=np.random.uniform(起始,末尾,(行,列))    #浮点数

                arr=np.random.randint(起始,末尾,(行数,列数))    #整数

                arr=np.random.rand(行数,列数)   #生成0-1之间的数

                #不支持三维

                #对于均匀分布,我们可以将生成的数据放入matplotlib,使用直方图plt.hist(数据,宽度,density=True)来看一看

        E.正态分布数

        1.两个参数:μ:均值,反应对称轴的位置;

                             δ:标准差,反应图像的胖瘦(越小越瘦,即数据越集中)

        2.代码: arr=np.random.normal(μ,δ,size)

                       arr=np.random.standard_normal(μ,δ,size)   #标准正态分布

4.切片索引

arr[张起始下标:张末,    行起始下标:行末 ,    列起:列末]

#截取时包括起始位置,不包括结束位置

5.形状改变

arr2=arr1.reshape([行,列])

        #reshape这里如果只想指定行或列,并不知道一共有多少个数据,我们可以用“-1”代替未知

        #reshape不在原数据上操作

arr1.resize(【行,列】)

        #resize不可使用-1代替未知

        #resize不需要新的变量进行接收,他就是在原数据上做出改变

arr2=arr1.T    #矩阵转置

6.去重

arr2=np.unique(arr1)

#1.不在原数值上做出改变,所以想查看效果,需要用新的变量接受

#2.arr2是一维数组,他就是把arr1中出现的“有效元素”摘出来

#3.注意这里是 np.xxx

7.更改类型

arr2=arr1.astype(np.int32)

代码:

import numpy as np
import matplotlib.pyplot as plt

# 1.二维数组
arr1 = np.array([[1, 2, 3], [0, 0, 0], [3, 5, 6]], dtype=str)
# 2.三维数组
arr2 = np.array(
    [
        [['h', 'd', 's', 's', 's'], ['3', 'f', 'f', 'a', 'g']],
        [['d', 'd', 'd', 'f', 'd'], ['3', 'd', 'h', 'x', 'd']],
        [['a', 'c', 'z', 'c', 'y'], ['w', 'w', 'w', 'w', 'w']]
    ])
# 3.数组属性查看
print(arr1)
print(arr2)
print(arr1.dtype)
print(arr2.ndim)
print(arr2.shape)
print(arr2.size)
print(arr1.itemsize)

# 3.自动生成数组
# 3.1自动生成0;1数组
arr01 = np.ones(shape=(2, 2, 3))
arr001 = np.ones_like(arr01)
arr02 = np.zeros(shape=(2, 3, 1))
arr002 = np.zeros_like(arr01)
print(arr01)
print("------------------------------")
print(arr02)
print("------------------------------")
print(arr001)
print("------------------------------")
print(arr002)
print("======================================================")

# 3.2深浅拷贝
arr_1 = np.array(arr001)
arr_2 = np.asarray(arr001)
arr001[0, 0, 0] = 99
print("arr_1是array深拷贝,只是复制一份,原数据改变他不变,arr_1为:")
print(arr_1)
print("arr_2是asarray浅拷贝,就像快捷方式一样,元数据怎么变,他怎么变,arr_2为:")
print(arr_2)

print("=======================================================")
# 3.3均匀分布随机生成
arr_r1 = np.random.rand(2, 3)
arr_r2 = np.random.uniform(0, 1, 100000)
arr_r3 = np.random.randint(0, 10, (2, 1))

f, axes = plt.subplots(nrows=2, ncols=1, figsize=(80, 20), dpi=100)
axes[0].hist(arr_r2, 10, density=True)

print("===========================================================")
# 3.4正态分布
arr_z1 = np.random.normal(170, 5, 10000)
axes[1].hist(arr_z1, 10, density=True)

plt.show()

print("===========================================================")
# 4.切片和索引
s1 = np.random.uniform(0, 1, (3, 4, 5))
s2 = s1[0:1, 0:3, 1:2]
print(s1)
print(s2)

s11 = np.random.randint(0, 10, (3, 4))
s22 = s11[1:3, 0:1]
print(s11)
print(s22)
print("==================================================")
# 5.形状改变
s33 = s11.reshape([-1, 6])
print(s11)
print(s33)
print("````````````````````````")
s11.resize([6, 2])
print(s11)
print("````````````````````````")
s55 = s11.T
print(s55)

print("==============================================")

# 6.类型修改
print(s11.dtype)
s00 = s11.astype(np.float64)

print(s00)

print("==============================================")
#7.数组去重
n1=np.array([[1,2,3,3,4],[1,2,3,0,2],[1,2,3,3,4]])
print(n1)
n2=np.unique(n1)
print(n2)

k=np.linspace(11,0,3,endpoint=True)
print(k)

❤遇到的问题:

1.创建0、1数组时,规格那里要写zerosshape=(,,)

    在reshape、resize那里,是 reshape(【,,】

     在均匀分布、正态分布处,直接是uniform(,,(行数,列数)

2.均匀分布那里不支持三维

3.resize不用其他变量“接着”,就是修改原数据

4.unique去重需要有新的变量接着

5.截取是左闭右开,要头不要尾

6.一般构建数组都是 np.xxx;在其他操作的时候都是  数组.xxx;但是在去重那里是np.unique(a)

                

        


http://www.kler.cn/news/308097.html

相关文章:

  • 【Linux】-基本指令(上)
  • 7-16 一元多项式求导(vector)
  • Linux - iptables防火墙
  • 安全、稳定、高速的跨国文件传输系统
  • Vue3 : ref 与 reactive
  • 【DataSophon】Yarn配置历史服务器JobHistory和Spark集成historyServer
  • 【C++】list常见用法
  • 数据库基础(MySQL)
  • 【C++】——string类的模拟实现
  • 【网络】DNS,域名解析系统
  • Vue Application exit (SharedArrayBuffer is not defined)
  • 数据结构与算法-17高级数据结构_图论(迪杰斯特拉算法)
  • 5分钟熟练上手ES的具体使用
  • Python数据分析-Steam 收入排名前 1500 的游戏
  • 克隆虚拟机,xshell无法传文件,windows无法ping克隆虚拟机,已解决
  • idea2024 Safe Mode解决、配置git出现Can‘t run a Git command in the safe mode、取消受信任项目功能
  • Python | Leetcode Python题解之第409题最长回文串
  • JDBC与MyBatis:数据库访问技术的变迁【后端 15】
  • VScode 怎么缩放界面大小
  • Spring Boot 3项目使用Swagger3教程
  • Web 安全基础教程:从零基础入门到精通
  • chatgpt个人版ssrf漏洞
  • [Unity Demo]从零开始制作空洞骑士第三集之导入插件2D toolkit和使用playmaker制作敌人状态机以及扩展FSM脚本
  • CSP-J初赛每日题目2
  • 深度学习Day-33:Semi-Supervised GAN理论与实战
  • 【电脑组装】✈️从配置拼装到安装系统组装自己的台式电脑
  • 华为eNSP使用详解
  • 【编程底层原理】亿级数据表查询最后10条记录limit 99999990,10性能为啥特慢,而且数据库都被查宕机了
  • C语言中数据类型
  • PHP:强大的Web开发语言