Numpy学习——数组类型

2023-05-16

Numpy学习——数组类型

    • 更多的数据类型
      • 转换(casting)
      • 不同数据类型的大小
    • 结构体类型
    • 处理丢失的数据

更多的数据类型

转换(casting)

numpy会自动转换高精度数据类型:

>>> np.array([1, 2, 3]) + 1.5
array([2.5, 3.5, 4.5])

赋值不会改变原有数据类型:

>>> a = np.array([1, 2, 3])
>>> a.dtype
dtype('int32')
>>> a[0] = 1.9
>>> a
array([1, 2, 3])

凑整:

>>> a = np.array([1.2, 1.5, 1.6, 2.5, 3.5, 4.5])
>>> b = np.around(a) #四舍五入
>>> b
array([1., 2., 2., 2., 4., 4.])
>>> c = np.around(a).astype(int)
>>> c
array([1, 2, 2, 2, 4, 4])

不同数据类型的大小

有符号整数:

类型位数
int88 bits
int1616 bits
int3232 bits
int6464 bits
>>> np.array([1], dtype=int).dtype
dtype('int32')
>>> np.iinfo(np.int32).max, 2**31 - 1
(2147483647, 2147483647)

无符号整数:

类型位数
uint88 bits
uint1616 bits
uint3232 bits
uint6464 bits
>>> np.iinfo(np.uint32).max, 2**32 - 1
(4294967295, 4294967295)

浮点数类型:

类型位数
float1616 bits
float3232 bits
float6464 bits
float9696 bits
float128128 bits
>>> np.finfo(np.float32).eps
1.1920929e-07
>>> np.finfo(np.float64).eps
2.220446049250313e-16
>>> np.float32(1e-8) + np.float32(1) == 1
True
>>> np.float64(1e-8) + np.float64(1) == 1
False

复合浮点数(complex):

类型位数
complex64two 32-bit floats
complex128two 64-bit floats
complex192two 96-bit floats
complex256two 128-bit floats

结构体类型

变量类型
sensor_code(4-character string)
position(float)
value(float)
>>> samples = np.zeros((6,), dtype=[('sensor_code', 'S4'), ('position', float), ('value', float)])
>>> samples.ndim
1
>>> samples.shape
(6,)
>>> samples.dtype.names
('sensor_code', 'position', 'value')
>>> samples[:] = [('ALFA',   1, 0.37), ('BETA', 1, 0.11), ('TAU', 1,   0.13),('ALFA', 1.5, 0.37), ('ALFA', 3, 0.11), ('TAU', 1.2, 0.13)]
>>> samples
array([(b'ALFA', 1. , 0.37), (b'BETA', 1. , 0.11), (b'TAU', 1. , 0.13),
       (b'ALFA', 1.5, 0.37), (b'ALFA', 3. , 0.11), (b'TAU', 1.2, 0.13)],
      dtype=[('sensor_code', 'S4'), ('position', '<f8'), ('value', '<f8')])

通过索引名称访问某个字段:

>>> samples['sensor_code']
array([b'ALFA', b'BETA', b'TAU', b'ALFA', b'ALFA', b'TAU'], dtype='|S4')
>>> samples['value']
array([0.37, 0.11, 0.13, 0.37, 0.11, 0.13])
>>> samples[0]
(b'ALFA', 1., 0.37)
>>> samples[0]['sensor_code'] = 'TAU'
>>> samples[0]
(b'TAU', 1., 0.37)

同时访问多个字段:

>>> samples[['position', 'value']]
array([(1. , 0.37), (1. , 0.11), (1. , 0.13), (1.5, 0.37), (3. , 0.11),
       (1.2, 0.13)],
      dtype={'names':['position','value'], 'formats':['<f8','<f8'], 'offsets':[4,12], 'itemsize':20})

花式索引:

>>> samples[samples['sensor_code'] == b'ALFA']
array([(b'ALFA', 1.5, 0.37), (b'ALFA', 3. , 0.11)],
      dtype=[('sensor_code', 'S4'), ('position', '<f8'), ('value', '<f8')])

注意:还有其他一些构造结构体数组的语法。

处理丢失的数据

对于浮点类型我们可以使用NaN,但是mask适用于所有数据类型:

>>> x = np.ma.array([1, 2, 3, 4], mask=[0, 1, 0, 1])
>>> x
masked_array(data=[1, --, 3, --],
             mask=[False,  True, False,  True],
       fill_value=999999)
>>> y = np.ma.array([1, 2, 3, 4], mask=[0, 1, 1, 1])
>>> x + y
masked_array(data=[2, --, --, --],
             mask=[False,  True,  True,  True],
       fill_value=999999)

用于函数处理:

>>> np.ma.sqrt([1, -1, 2, -2])
masked_array(data=[1.0, --, 1.4142135623730951, --],
             mask=[False,  True, False,  True],
       fill_value=1e+20)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy学习——数组类型 的相关文章

  • Python 和 Numpy 是 nan 和 set

    我在使用 Python 的 Numpy set 和 NaN 非数字 时遇到了不可预测的行为 gt gt gt set np float64 nan np float64 nan set nan nan gt gt gt set np flo
  • numpy polyfit 中使用的权重值是多少以及拟合误差是多少

    我正在尝试对 numpy 中的某些数据进行线性拟合 Ex 其中 w 是该值的样本数 即对于点 x 0 y 0 我只有 1 个测量值 该测量值是2 2 但对于这一点 1 1 我有 2 个测量值 值为3 5 x np array 0 1 2 3
  • Pandas DataFrame 具有 X、Y 坐标到 NumPy 矩阵

    我有一个包含列的 DataFrameX Y and value e g X Y value 1 1 56 2 1 13 3 1 25 1 2 7 2 2 18 1 123 91 50 123 32 我需要将其转换为 DataFrame 到
  • 使用时间、日期、时间增量

    我有一个问题 我的工作时间和时差很多 到目前为止 我已经使用许多 if 语句解决了这个问题 但这些语句很容易出错 在寻找更好的解决方案并且无需重新发明轮子的过程中 我遇到了时间 日期和时间增量 但这些对我来说似乎太不灵活了 所以我正在寻找如
  • pandas 中的滚动减法

    我正在尝试做类似的事情 ff pd DataFrame uid 1 1 1 20 20 20 4 4 4 date 09 06 10 06 11 06 09 06 10 06 11 06 09 06 10 06 11 06 balance
  • numpy python 中的“AttributeError:'matrix'对象没有属性'strftime'”错误

    我有一个维度为 72000 1 的矩阵 该矩阵涉及时间戳 我想使用 strftime 如下所示 strftime d m y 为了得到像这样的输出 11 03 02 我有这样一个矩阵 M np matrix timestamps 我使用了
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 格式化多维数组 Python

    如何编写代码来更改多维数组中每个单独数组的值a出现负值后立即归零 所以里面的第二个数组a有负值 12 34 5 6 88 10 30 75 10 会将其所有值及其后的值转为零 将数组变成 12 34 5 6 88 0 0 0 我怎样才能获得
  • Numpy vectorize() 正在展平整个数组

    我的输入是一个 numpy 元组数组 values np array 4 5 2 18 4 7 3 8 我的功能如下 def outerFunc values print values def innerFunc values print
  • Numpy 安装运行时错误:工具链损坏:无法链接简单的 C 程序

    MacBook 空气 我花了一段时间尝试安装这个 首先 我无法使用 Homebrew 因为我安装了它 但随后 网络连接 断开 现在我的计算机找不到 brew 命令 但它说 homebrew 已安装 所以我不知道如何在不使用brew命令的情况
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 求列表中某列的总和,出现“TypeError:无法使用灵活类型执行reduce”

    所以我对 python 很陌生 并且已经搜索过这个答案 但大多数答案都超出了我的理解范围 我有一个这样的列表 right point point 1 76999998093 right fear fear 1 62700009346 rig
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • 使用 Numpy 与 einsum 和 tensordot 进行相同的操作

    假设我有两个 3D 数组A and B形状的 3 4 N and 4 3 N 我可以计算沿第三轴的切片之间的点积 with einsum np eisum ikl kjl gt ijl A B 是否可以执行相同的操作numpy tensor
  • 如何将 MP3 音频文件读入 numpy 数组/将 numpy 数组保存到 MP3?

    有没有办法从 MP3 音频文件中读取 写入 MP3 音频文件numpy具有类似 API 的数组scipy io wavfile read https docs scipy org doc scipy 0 14 0 reference gen
  • 将 scipy 稀疏矩阵的几行采样到另一个中

    如何对 scipy 稀疏矩阵的某些行进行采样 并从这些采样的行中形成一个新的 scipy 稀疏矩阵 例如 如果我有一个 10 行的 scipy 稀疏矩阵 A 并且我想创建一个新的 scipy 稀疏矩阵 B 其中 A 的第 1 3 4 行 该
  • 2D Numpy 数组花式索引 + 掩码

    I have import numpy as np a np array 4 99 2 3 4 99 1 8 7 8 6 8 Why is a True True False False 1 2 等于 array 99 99 And not

随机推荐

  • 海康威视 web3.0开发 常见错误 404,403

    海康威视 web3 0开发 常见错误 404 xff0c 403 配置情况 IE 浏览器 43 nginx 43 thinkPHP5 0 43 海康威视200万星光级红外球机1080P变焦云台球机DS 2DC4223IW D 关于如何使用网
  • 虚拟USB设备总结

    开发环境 xff1a windows 首先来总结最近研究的虚拟USB设备 xff0c 进而虚拟USB键盘成功了 xff0c 开心 xff01 得出了一个C S框架 xff0c 首先说一下客户端 客户端有两个部分 xff0c 用户空间工具和底
  • C#Winform:《DataGridViewComboBoxCell值无效》解决方案

    值无效 xff0c 可能是你下拉框选项 xff0c 没有这样的值 xff0c 而你却设置这个值 dataGridView1 Rows i Cells 1 Value 61 Hello World 解决方法就是在窗体的构造函数里添加如下代码
  • FFmpeg笔记

    1 下载 xff0c 配置 FFmpeg官网 xff1a https ffmpeg org 用的系统是Ubuntu18 04 所以直接apt get就可以了 sudo apt get install ffmpeg 2 简介 xff0c 上手
  • 《WPF中TextBox绑定Double类型数据,文本框不能输入小数点》解决方案

    在App cs文件里面 xff0c 重写OnStatup xff0c 添加下面一条语句即可 span class token keyword public span span class token keyword partial span
  • stm32 HAL库串口收发-中断接收DMA发送不定长数据

    使用的时候发现 xff1a 接收完一个字节立即用DMA的方式发送出去 xff0c 会出现数据的丢失 xff0c 如用串口调试助手发送1234 xff0c 返回的只有13 目前只能用缓存buf 43 协议结束 xff08 如0x0d 0x0a
  • headers Authorization

    var auth 61 96 host user host pass 96 const buf 61 Buffer from auth 39 ascii 39 strauth 61 buf toString 39 base64 39 con
  • 平衡车入门---MPU6050陀螺仪的使用

    平衡车入门 MPU6050陀螺仪的使用 一 MPU6050简介二 学习MPU6050的步骤三 I2C协议简介四 MPU6050硬件介绍五 MPU6050的几个重要寄存器六 原始数据的单位换算七 角度换算 滤波算法 一 MPU6050简介 M
  • C++ 为什么基类的析构函数要声明为虚函数

    1 为什么声明基类析构函数为虚函数 xff1f xff08 1 xff09 基类指针 指向 基类对象 xff1a 不用考虑基类析构函数是否声明为虚函数 xff08 2 xff09 基类指针 指向 派生类对象 xff1a 若基类析构函数不为虚
  • std::map find和count效率测试

    1 简介 在使用标准模板库中的map容器且遇到键值对的值为自定义struct或class类型时 xff0c 考虑到特殊场景 xff08 即不能确保key自始至终唯一 xff09 xff0c 若插入新元素 xff08 new 对象 xff09
  • 随机生成8位长字符串(大小写字母及数字组合)

    1 简要说明 项目上开发要用到随机生成一个8位长的字符串 xff08 类似Java工具类中的UUID xff09 xff0c 作为id来对同一事物的不同个体进行唯一标识 xff0c 如同一个班级里学生名字几乎不同 xff0c 偶尔会有重复
  • C++引用和指针区别

    1 C 43 43 引用和指针区别 xff1a 指针是一个新的变量 xff0c 指向另一个变量的地址 xff0c 我们可以通过访问这个地址来修改另一个变量 xff1b 而引用是一个别名 xff0c 对引用的操作就是对变量的本身进行操作指针可
  • TCP/UDP端口号

    大家好呀 xff0c 我是请假君 xff0c 今天又来和大家一起学习数通了 xff0c 今天要分享的知识是TCP UDP端口号 在IP网络中 xff0c 一个IP地址可以唯一地标识一个主机 但一个主机上却可能同时有多个程序访问网络 要标识这
  • C/C++ 电脑微信dat文件解密及工具分享

    1 前言 最近想整理下照片 xff08 回忆 怀旧 xff09 xff0c 以前也知道在微信pc端聊天时 xff0c 图片 视频 文档等文件会缓存在一个目录下 xff08 电脑微信 左下角三条杠 设置 文件管理 xff09 xff0c 点击
  • ODBC::SQLExecDirect返回-1 错误信息ORA-00604 ORA-01000

    在通过使用微软提供的ODBC SDK读取数据库 xff08 SELECT xff09 时 xff0c 发现Oracle读着读着就读不到数据了 xff08 MySQL和SQL Server是正常的 xff09 xff0c 经调试发现SQLEx
  • std::vector与deque首尾增删及遍历(应用于CListCtrl虚拟列表)混合性能测试

    1 简介 在工作项目中应用MFC类库的CListCtrl刷新加载数据 xff0c 一开始是用InsertItem SetItemText 和DeleteItem 等成员函数来实现数据在列表视图控件中的新增和删除 xff08 最多显示500条
  • Matlab 实用代码集

    本博客将存放一些常用的Matlab代码片段 xff0c 整理成博客 xff0c 并持续更新 xff0c 以便写代码可以调用 1 函数多输入多输出 Matlab写函数的时候 xff0c 输入输出个数经常是不固定的 xff0c narginch
  • 基于c++的A-star算法

    资料 xff1a https www cnblogs com guxuanqing p 9610780 html 一 基础原理 1 从起点开始 xff0c 向周围八个方向扩展 测试新扩展的点的路径代价 xff0c 路径代价由已走的路径和距离
  • 倍增算法

    倍增算法 给定一个整数 M xff0c 对于任意一个整数集合 S xff0c 定义 校验值 如下 从集合 S 中取出 M 对数 即 2 M 个数 xff0c 不能重复使用集合中的数 xff0c 如果 S 中的整数不够 M 对 xff0c 则
  • Numpy学习——数组类型

    Numpy学习 数组类型 更多的数据类型转换 casting 不同数据类型的大小 结构体类型处理丢失的数据 更多的数据类型 转换 casting numpy会自动转换高精度数据类型 xff1a span class token operat