Numpy 基于 ndarray 的其他属性

小夏 游戏 更新 2024-02-14

除了内存布局属性外,用于 python 数据分析的 numpy 库的 ndarray 对象还具有数据类型属性和 t 和 real 等其他属性。

ndarray 的数据类型属性如下:

描述:

ndarray.dtype 返回 Array 元素的数据类型。

>>import numpy as np

>arr1=np.array([1,2,3])

>arr1

array([1, 2, 3])

通过 NDArosiondtype 获取 NDAlus 的数据类型。

>arr1.dtype

dtype('int32')

ndarray 的数据类型属性如下:

描述:

ndarray.t 转置数组,原始数组保持不变。

一维数组在转置之前和之后是相同的。

对于二维及以上数组,轴数保持不变,转置后形状发生变化。

>>import numpy as np

>ar1=np.array([1,2,3])

>ar1

array([1, 2, 3])

t 转置数组以生成一个新数组,并且原始数组保持不变。

一维数组在转置之前和之后是相同的。

>ar1.t

array([1, 2, 3])

>ar2=np.array([[1,2,3],[5,6,7]])

>ar2

array([[1, 2, 3],[5, 6, 7]])

二维数组,转置后,轴数不变,形状不变。

>ar2t=ar2.t

>ar2t

array([[1, 5],[2, 6],[3, 7]])

>ar2.ndim

>ar2.shape

>ar2t.NDIM 轴的数量保持不变。

>ar2t.形状形状变化,轴尺寸互换。

>ar3=np.array([[1,2,3],[5,6,7]]]

>ar3

array([[1, 2, 3],[5, 6, 7]]]

三维阵列,转置后,轴数不变,形状变化。

>ar3t=ar3.t

>ar3t

array([[1],[5]],2],[6]],3],[7]]]

>ar3.ndim

>ar3.shape

>ar3t.NDIM 轴的数量保持不变。

>ar3t.形状形状变化,轴尺寸互换。

描述:ndarray.real 返回数组的复数数据类型的实数部分。

z=a+bj,z是复数,a是复数的实部,b是复数的虚部。

>>import numpy as np

z=a+bj,z是复数,a是复数的实部,b是复数的虚部。

>ar1=np.array([1+2j,3+5j])

>ar1

array([1.+2.j, 3.+5.j])

real 返回复数的实数部分。

>ar1.real

array([1., 3.])

描述:ndarray.IMAG 返回数组复杂数据类型的虚部。

>>import numpy as np

z=a+bj,z是复数,a是复数的实部,b是复数的虚部。

>ar1=np.array([1+2j,3+5j])

>ar1

array([1.+2.j, 3.+5.j])

imag 返回复数的虚部。

>ar1.imag

array([2., 5.])

描述:numpy.ndarray.flat 返回一个由数组的所有元素组成的一维迭代器。

与内置的迭代器对象类似,它支持索引和遍历等操作。

>>import numpy as np

>ar1=np.array([[1,2,3],[4,5,6]])

>ar1

array([[1, 2, 3],[4, 5, 6]])

# numpy.ndarray.flat 返回一个由数组的所有元素组成的一维迭代器。

>ar1_flat=ar1.flat

>from collections.abc import iterable

flat 返回可迭代对象。

>isinstance(ar1_flat,iterable)

true 遍历 flat 返回的迭代器。

>i for i in ar1_flat]

支持索引操作。

>ar1_flat[2]

获取长度。

>len(ar1_flat)

转换为列表

>list(ar1_flat)

>ar1_t=ar1.t

>ar1_t_flat=ar1_t.flat

>ar1_t

array([[1, 4],[2, 5],[3, 6]])

>i for i in ar1_t_flat]

描述:numpy.ndarray.CTYPES 返回一个对象,该对象简化了数组与 CTYPES 模块的交互。

numpy.ndarray.ctypes.data 返回数组的内存地址。

numpy.ndarray.ctypes.data as 返回一个数据指针,该指针指向对数组的引用。

ctypes.c_uint32*ar1.size).from_address(numpy.ndarray.ctypes.data) 创建与 NDAluS 地址相同的数组。

>>import numpy as np

>import ctypes as ct

>ar1=np.array([[11,12,13],[15,16,18]])

>ar1

array([[11, 12, 13],[15, 16, 18]])

>ar1.dtype

dtype('int32')

# numpy.ndarray.CTYPES 返回一个对象,该对象简化了数组与 CTYPES 模块的交互。

>ar1_ctypes=ar1.ctypes

data 返回指向数组内存区域的指针,该指针是一个整数。

>cdata=ar1_ctypes.data

>ar1_ctypes

>cdata

data as 返回一个数据指针,该指针指向对数组的引用。

>cdata32=ar1_ctypes.data_as(ct.pointer(ct.c_uint32))

>cdata32

_main__.lp_c_ulong object at 0x000001fbfff26440>

将数据作为数据进行遍历。

>cdata32[i] for i in range(ar1.size)]

创建一个数组 b,共享 numpyndarray.ctype.数据地址

AR1 CTYPES 与 B 相互作用。

>b=(ct.c_uint32*ar1.size).from_address(cdata)

>b

_main__.c_ulong_array_6 object at 0x000001fbffecee40>

>b[:]

修改 ar1 的第一个元素。

>ar1[0][0]

>ar1[0][0]=21

>ar1[0][0]

>ar1

array([[21, 12, 13],[15, 16, 18]])

b 元素也被修改,因为它指向相同的地址

>b[:]

修改 b 的元素。

>b[1]=22

>b[:]

>ar1

array([[21, 22, 13],[15, 16, 18]])

相似文章

    Numpy 基于 ndarray 内存布局属性

    ndarray 属性反映了数组本身的信息,可以通过访问该属性来访问或设置数组的内部信息。ndarray 属性包括内存布局属性 数据类型属性和其他属性。ndarray 的内存布局属性如下 描述 ndarray.flags 获取 ndarray 对象的内存信息,包括以下属性 例 import numpy...

    浅谈书法基础系列的章节

    书法基础系列 我已经讲过握笔 动笔 打结字的方法,接下来我们再讲书法的布局。这样一来,系列作品就形成了清晰的脉络,也方便初学者翻阅查找。书法是指在整个书法作品中,把字与字 线与线 方与面的关系进行排列和安排,并加以照顾的方法。即全部作品的 布白 法,又称 大章法 习惯上称点画排列为一个词,一个字的排...

    武术套路和枪械是以基本动作教授的

    作为武术器械中常见的武器之一,枪 历来被誉为 兵器之王 在冷兵器时代,则被称为 一寸长,一寸强 枪法种类繁多,其中流传最广的枪法是 杨家枪 月家枪 珞珈枪 高家枪等枪法,但最基本的动作是停枪 拿枪 刺枪。要想练好枪法,牢牢掌握基本动作是关键,下面就和大家分享枪法中挡枪 持枪 刺枪基本动作的要领。.挡...

    《易经八卦》根基的十二个地支

    十二个地支是我国古老的传统年表,也是万物的起源。个地支,即农历个,起源于古代每月的祭祀活动,地支是古代人们用来描述月亮周期的十二个连续符号。在中华大地上,十二个地支文化的繁荣发展是值得骄傲的,也给我们的生活带来了不少便利。现在让我们谈谈地上的个分支。地上树枝的 树枝 就像一棵树的树枝,位于 地 下面...

    《基本书法系列》“雍子八法”详解

    在学习书法的过程中,雍子的八种方法就是基础。毋庸置疑,书法的重要性就在这里建立起来。雍子八律的历史和起源 自三国钟玄创立小开法以来,到晋代,王羲之开创了新一代书法,从此,各类书法在书法 技法上,不断规范 完善。钟玄的正文只是在初期,到了隋朝,志永经过多年的努力,终于创作出了著名的 雍子八法 成为后世...