1.复合数组的创建

# 复合数组,最重要的是定义dtype
a = np.array([('ABC', [1, 2, 3])], dtype="U3, 3i4")
print(a)
# [('ABC', [1, 2, 3])]
print(a[0]["f0"], a[0]["f1"][0]) # 默认的名称为f0, f1 .....
# ABC 1

2.如果不想用默认的名称,那就如下操作,得到的值和上面一样

b = np.array([('ABC', [1, 2, 3])], dtype=[("fa", np.str_, 3), ("fb", np.int32, 3)])
print(b)
print(b[0]["fa"], b[0]["fb"][0]) c = np.array([('ABC', [1, 2, 3])], dtype={"names": ["fa", "fb"], "formats":["U3", "3i4"]})
print(c)
print(c[0]["fa"], c[0]["fb"][0])

3.由于复合数组,是不是有可能就会改变数组里面的值,因此也可以为某一段数组多有一些字节或位

# 这里的0和16是偏移,以0位偏移基点,为数组预留空间
d = np.array([('ABC', [1, 2, 3])], dtype={"fa": ("U3", 0),"fb": ("3i4", 16)})
print(d)
# [('ABC', [1, 2, 3])]
print(d[0]["fa"], c[0]["fb"][0])
# ABC 1
print(c.itemsize)
#
# 获取数组元素的位数, 1字节 = 8位
print(d.itemsize)
#

numpy中的复合数组的更多相关文章

  1. Numpy中矩阵和数组的区别

    矩阵(Matrix)和数组(Array)的区别主要有以下两点: 矩阵只能为2维的,而数组可以是任意维度的. 矩阵和数组在数学运算上会有不同的结构. 代码展示 1.矩阵的创建 采用mat函数创建矩阵 c ...

  2. numpy中多维数组的绝对索引

    这涉及到吧多维数组映射为一维数组. 对于3维数组,有公式: def MAP(x,y,z): return y_s * z_s * x + z_s * y + z 此公式可以推广到N维 测试代码:(两个 ...

  3. Numpy中数组的乘法

    Numpy中数组的乘法 按照两个相乘数组A和B的维度不同,分为以下乘法: 数字与一维/二维数组相乘: 一维数组与一维数组相乘: 二维数组与一维数组相乘: 二维数组与二维数组相乘: numpy有以下乘法 ...

  4. Python numpy中矩阵的用法总结

    关于Python Numpy库基础知识请参考博文:https://www.cnblogs.com/wj-1314/p/9722794.html Python矩阵的基本用法 mat()函数将目标数据的类 ...

  5. Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】

    目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...

  6. 理解numpy中ndarray的内存布局和设计哲学

    目录 ndarray是什么 ndarray的设计哲学 ndarray的内存布局 为什么可以这样设计 小结 参考 博客:博客园 | CSDN | blog 本文的主要目的在于理解numpy.ndarra ...

  7. numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组

    numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组 import numpy as np 使用array对象 arr1=np.arange(12).reshap ...

  8. numpy中三维数组转变成二维数组

    numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: >>>a=np.reshape(np.arange(18),(3,3,2)) >>> ...

  9. numpy中的快速的元素级数组函数

    numpy中的快速的元素级数组函数 一元(unary)ufunc 对于数组中的每一个元素,都将元素代入函数,将得到的结果放回到原来的位置 >>> import numpy as np ...

随机推荐

  1. 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)

    锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...

  2. maven多模块项目找不到Class错误

    接手了一个maven管理的多模块项目,又是javaconfig,又是spring data jpa,还算是比较新比较正规的模块化结构吧..然后我往其中的一个模块中新添加了一个jpa的entity,然后 ...

  3. laravel创建资源路由控制器

    php artisan make:controller PhotoController --resource

  4. 【原创】paintEvent()函数显示文本

    [代码] void MainWindow::paintEvent(QPaintEvent*) { QPainter p(this); QRect r; p.setPen(Qt::red); p.dra ...

  5. javascript进阶笔记(3)

    本篇文章我们来学习和讨论一下js中的闭包.闭包是纯函数式编程的一个特性,因为它们能够大大简化复杂的操作.在js中,闭包的重要性不言而喻! 简单的说,闭包(closure)是 一个函数在创建时 允许 该 ...

  6. Android : 代码多维度管理(产品风味) - flavorDimensions & productFlavors

    一.关于配置产品风味 Android studio 升级到3.0之后,gradle增加了多维度管理配置,便于同一个项目中创建应用的不同版本,分别管理依赖项并签署配置.创建产品风味与创建构建类型类似:只 ...

  7. 《图解TCP/IP》读书笔记(转)

    reference: https://www.cnblogs.com/edisonchou/p/5987827.html 一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TC ...

  8. ajax之同步异步详解

                    同步:一堆任务,按顺序去执行,只能一件件的来,如一个厨师做菜                 异步:一堆任务,可以同时进行,如多个厨师做菜                ...

  9. CPU的硬件结构和汇编语言

    (已更正) 这个问题包括CPU的硬件结构和汇编语言的范畴. 这里梳理一下. 首先, 题主"李建国"自问自答的部分说的是正确的, CPU的指令集是软件与CPU这两个层级之间的接口, ...

  10. go语言基础学习

    go基础学习,面向对象-方法在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法 使用= 和:=的区别: // = 使用必须使用先var声明例如: var a a=100 ...