脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - NDArray 与 numpy.ndarray 互相转换方式

NDArray 与 numpy.ndarray 互相转换方式

2023-02-15 13:53xiaotao_1 Python

这篇文章主要介绍了NDArray 与 numpy.ndarray 互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

NDArray与numpy.ndarray互相转换

?
1
2
3
4
5
6
7
import numpy as np
from mxnet import nd
# numpy.ndarray 变 mx.NDArray
np_val = np.array([1, 2, 3])   # 定义一个numpy.ndarray
nd_val = nd.array(np_val)   # 深复制
# NDArray 变 numpy.ndarray
np_val_ = nd_val.asnumpy()

NumPy与ndarray简介

NumPy简介

NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:

  • 一个强大的N维数组对象ndrray;
  • 比较成熟的(广播)函数库;
  • 用于整合C/C++和Fortran代码的工具包;
  • 实用的线性代数、傅里叶变换和随机数生成函数

NumPy的优点:

  • 对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多;
  • NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的;
  • NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多

当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此,在科学计算之外的领域,NumPy的优势也就不那么明显。

数组ndarray

NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器,该对象由两部分组成:

  • 实际的数据;
  • 描述这些数据的元数据;

大部分的数组操作仅仅是修改元数据部分,而不改变其底层的实际数据。数组的维数称为秩,简单来说就是如果你需要获取数组中一个特定元素所需的坐标数,如a是一个2×3×4的矩阵,你索引其中的一个元素必须给定三个坐标a[x,y,z],故它的维数就是3。而轴可以理解为一种对数组空间的分割,以数组a为例,如果我们以0为轴,那么a可以看成是一个由两个元素构成的数组,其中每个元素都是一个3×4的数组。

我们可以直接将数组看作一种新的数据类型,就像list、tuple、dict一样,但数组中所有元素的类型必须是一致的,Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy中添加了许多其他的数据类型,如bool、inti、int64、float32、complex64等。同时,它也有许多其特有的属性和方法。

常用ndarray属性:

dtype 描述数组元素的类型

shape 以tuple表示的数组形状

ndim 数组的维度

size 数组中元素的个数

itemsize 数组中的元素在内存所占字节数

T 数组的转置

flat 返回一个数组的迭代器,对flat赋值将导致整个数组的元素被覆盖

real/imag 给出复数数组的实部/虚部

nbytes 数组占用的存储空间

常用ndarray方法:

   
reshape(…) 返回一个给定shape的数组的副本
resize(…) 返回给定shape的数组,原数组shape发生改变
flatten()/ravel() 返回展平数组,原数组不改变
astype(dtype) 返回指定元素类型的数组副本
fill() 将数组元素全部设定为一个标量值
sum/Prod() 计算所有数组元素的和/积
mean()/var()/std() 返回数组元素的均值/方差/标准差
max()/min()/ptp()/median() 返回数组元素的最大值/最小值/取值范围/中位数
argmax()/argmin() 返回最大值/最小值的索引
sort() 对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序
view()/copy() view创造一个新的数组对象指向同一数据;copy是深复制
tolist() 将数组完全转为列表,注意与直接使用list(array)的区别
compress() 返回满足条件的元素构成的数组

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/xiaotao_1/article/details/79594802

延伸 · 阅读

精彩推荐
  • PythonPython3 用matplotlib绘制sigmoid函数的案例

    Python3 用matplotlib绘制sigmoid函数的案例

    这篇文章主要介绍了Python3 用matplotlib绘制sigmoid函数的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    hiudawn7462021-08-12
  • PythonPython实现自动登录百度空间的方法

    Python实现自动登录百度空间的方法

    这篇文章主要介绍了Python实现自动登录百度空间的方法,涉及Python的http请求发送、获取响应、cookie操作等相关技巧,需要的朋友可以参考下...

    JoeBlackzqq3602020-11-16
  • Pythonpandas DataFrame数据转为list的方法

    pandas DataFrame数据转为list的方法

    下面小编就为大家分享一篇pandas DataFrame数据转为list的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    nudt_qxx21542021-01-30
  • Pythonpython新手练习实例之万年历

    python新手练习实例之万年历

    最近进行python基础培训,课下作业制作万年历,之前没做过,感觉里面还是有很多需要学的,下面这篇文章主要给大家介绍了关于python新手练习实例之万年历的相...

    Begin to change9412023-02-09
  • PythonPython真的是瓶颈吗?

    Python真的是瓶颈吗?

    在本文中,我们讨论了Python是否是当前数据处理领域的真正瓶颈。尽管Python比许多编译语言要慢,但它易于使用且功能多样。我们注意到,对于许多人来说...

    今日头条4932020-12-24
  • Python通过mod_python配置运行在Apache上的Django框架

    通过mod_python配置运行在Apache上的Django框架

    这篇文章主要介绍了通过mod_python配置运行在Apache上的Django框架,Django是最具人气的Python web开发框架,需要的朋友可以参考下 ...

    脚本之家3512020-07-25
  • Python对python中的pop函数和append函数详解

    对python中的pop函数和append函数详解

    今天小编就为大家分享一篇对python中的pop函数和append函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    三支烟4992021-02-15
  • Pythonpython机器学习库xgboost的使用

    python机器学习库xgboost的使用

    这篇文章主要介绍了python机器学习库xgboost的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    宋建国22092020-04-08