Numpy的ndarray:一种多维数组对象

N维数组对象,该对象是一个快速而灵活的大数据集容器,nadarry是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。每个数组都有一个shape(表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)

import numpy as np
# 创建ndarry
# 创建数组最简单的方法就是使用array函数,它接受一切序列型的对象
data1 = [6,7.5,8,0,1]
# 然后产生一个新的含有传入数据的NumPy数组
arr1 = np.array(data1)
arr1
array([6. , 7.5, 8. , 0. , 1. ])
# 嵌套序列将会被转换为一个多维数组
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
arr2 array([[1, 2, 3, 4],
[5, 6, 7, 8]]) arr2.shape # 形状 二维数组,每一个维度4个值
(2, 4) # np.array会尝试为新建的这个数组推断出一个较为合适的数据类型,保存在一个特殊的dtype对象中
arr1.dtype
dtype('float64')
arr2.dtype
dtype('int32') # 除np.array之外,还有一些函数也可以新建数组 # 见词知意,新建10个全是0的数组
np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) # 见词知意,新建10个全是1的数组
np.ones(10)
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) np.zeros((3,5))
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]]) # empty不是见名知意了,它返回的都是一些未初始化的垃圾值
np.empty((3,5,2))
array([[[1.22955771e-311, 9.58487353e-322],
[0.00000000e+000, 0.00000000e+000],
[0.00000000e+000, 5.02034658e+175],
[4.66725104e-062, 4.01832345e-057],
[9.51657595e+169, 3.34722073e-033]], [[1.47763641e+248, 1.16096346e-028],
[7.69165785e+218, 1.35617292e+248],
[3.10139001e+179, 9.15011178e-071],
[1.13823902e-042, 1.33689723e+165],
[4.30420903e-096, 6.32299154e+233]], [[6.48224638e+170, 5.22411352e+257],
[5.74020278e+180, 8.37174974e-144],
[1.41529402e+161, 9.16651763e-072],
[4.10024115e+097, 5.06265680e-038],
[3.75559122e+126, 1.58268989e-319]]])
函数 说明
array 将输入数据(列表、元组、数组或其他序列类型)转为ndarray。要么推断出dtype,要么显式指定dtype
asarray 将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制
arange 类似于内置的range,但返回的是一个ndarray而不是列表
ones、ones_like 根据指定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组
zeros、zeros_like
empty、empty_like 创建新数组,只分配内存空间但不填充任何值
eye、identity 创建一个正方的N*N单位矩阵(对角线为1,其余为0)
# asarray将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制
np.asarray([1,2,3,4,5])
array([1, 2, 3, 4, 5]) #array将输入数据(列表、元组、数组或其他序列类型)转为ndarray。要么推断出dtype,要么显式指定dtype\
# 指定dtype
arr3 = np.array([1,2,3],dtype = np.float64)
arr3.dtype
dtype('float64')
arr4 = np.array([4,5,6],dtype = np.int32)
arr4.dtype
dtype('int32')

numpy的数据类型

类型 类型代码 说明
int8、uint i1、u1 有符号和无符号的8位整型
int16、uint16 i2、u2 有符号和无符号的16位整型
int32、uint32 i4、u4
int64、uint64 i8、u8
float16 f2 半精度浮点数
float32 f4或f 标准的双精度浮点数
float64 f8或d 标准的双精度浮点数
float128 f16或g 扩展精度浮点数
complex64、complex128、complex256 c8、c16、c32 分别用两个32位、64位或128位浮点数表示的复数
object O Python对象类型
string_ S 固定的长度的字符串类型(每个字符1个字节),例如要创建一个长度为10的字符串,应使用S10
unicode_ U 固定长度的unicode类型(U10)
# 显式转换dtype
arr6 = np.array([1,2,3,4,5])
dtype('int32')
arr6.dtype
dtype('float64') # 如果将浮点数转换成整数,则小数部分将会被截断
arr8 = np.array([3.7,-1.2,2.6,0.5,12.9,10.1])
arr8.dtype
dtype('float64') arr9 = arr8.astype(np.int32)
arr9.dtype
arr9
array([ 3, -1, 2, 0, 12, 10]) # 如果某字符串数组表示的全是数字,也可以转换为数值形式
arr10 = np.array(['1.25','-9.6','42'], dtype = np.string_)
arr10
array([b'1.25', b'-9.6', b'42'], dtype='|S4') arr11 = arr10.astype(np.float32)
arr11
array([ 1.25, -9.6 , 42. ], dtype=float32) # 数组的dytpe另一个用法
int_array = np.arange(10)
int_array
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
calibers = np.array([.22,.270,.357,.44,50],dtype = np.float64)
# 复制类型
int_array.astype(calibers.dtype)
# 调用astype无论如何都会创建一个新的数组(原始数据的一份拷贝),即使dtype跟老dtype相同也是如此
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

数组和标量之间的运算

数组的意义是让你不写循环即可完成数据批量运算,这通常叫矢量化

大小相等的数组之间的任何运算都会将运算应用到元素级

不同大小的数组之间的运算叫做广播

arr12 = np.array([[1.,2.,3.],[4.,5.,6.]])
arr12 array([[1., 2., 3.],
[4., 5., 6.]]) arr12 * arr12 array([[ 1., 4., 9.],
[16., 25., 36.]])
arr12 - arr12 array([[0., 0., 0.],
[0., 0., 0.]]) 1 / arr12 array([[1. , 0.5 , 0.33333333],
[0.25 , 0.2 , 0.16666667]]) arr12 ** 0.5 array([[1. , 1.41421356, 1.73205081],
[2. , 2.23606798, 2.44948974]])

Numpy:ndarray数据类型和运算的更多相关文章

  1. 3.1Python数据处理篇之Numpy系列(一)---ndarray对象的属性与numpy的数据类型

    目录 目录 (一)简单的数组创建 1.numpy的介绍: 2.numpy的数组对象ndarray: 3.np.array(list/tuple)创建数组: (二)ndarray对象的属性 1.五个常用 ...

  2. Python中Numpy ndarray的使用

    本文主讲Python中Numpy数组的类型.全0全1数组的生成.随机数组.数组操作.矩阵的简单运算.矩阵的数学运算. 尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便. 定义数 ...

  3. Numpy Ndarray对象1

    标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指 针.这样为了保存一个简单的[1,2,3],需要有3个指针和三 ...

  4. python:<class 'numpy.ndarray'>的学习

    在学习opencv-python的时候,给出图片地址再调用cv2.imread("地址"),发现出创建的是numpy类型的ndarray对象,用来存放多维数组的对象 # 导入cv2 ...

  5. ndarray数据类型

    dtype(数据类型)是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息 In [18]: sim1 = np.array([1,2,3],dtype=np.float64) ...

  6. NumPy 中的集合运算

    怎样快速找出两个数组中相同的元素? numpy.isin(element,test_elements,assume_unique = False,invert = False ) 计算test_ele ...

  7. NumPy Ndarray 对象

    NumPy Ndarray 对象 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对象是用于存放 ...

  8. torch.Tensor和numpy.ndarray

    1. torch.Tensor和numpy.ndarray相互转换 import torch import numpy as np # <class 'numpy.ndarray'> np ...

  9. ndarray数据类型及转换

    ndarray数据类型 Ndarray的基本数据类型如下图所示,数据类型的命名采用“类型名+数字”的形式表示,数字表示数据的比特位长.在计算机中比特位bit是表示数据最小的单位,1个字节Byte的长度 ...

随机推荐

  1. 25.安装配置phantomjs

    1.官网下载windows版本:http://phantomjs.org/download.html2.下载完解压,将PhantomJS可执行文件配置到环境变量里.比如: 将 E:\Soft\soft ...

  2. django之manytomanyfield

    #mezzanine中BlogPost类的定义class BlogPost(Displayable, Ownable, RichText, AdminThumbMixin): "" ...

  3. 在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud

    参考:https://www.cnblogs.com/kluan/p/6014989.html 下载 网盘安装包,Bcloud 是一个 Linux 下超赞的客户端, 官网 github: https: ...

  4. 01.GOF设计模式_概述

    0.Abstract Fcatory 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类. 1. Adapter 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原 ...

  5. leetcode540

    这道题目的要求,Note: Your solution should run in O(log n) time and O(1) space. 因此应该用二分查找的方式,代码如下: class Sol ...

  6. 推荐一款idea 翻译插件 ECTranslation

    无意中看到一款idea翻译插件, ECTranslation,才知道有这么个东西,推荐给看到的人吧,使用简单,值得拥有. 参考:http://p.codekk.com/detail/Android/S ...

  7. [linux]如何更新Ubuntu的数据源

    为何要更新数据源?国外的数据源,除了速度慢这个次要因素,更可怕的是有些链接根本不通,导致用户既没有下载东西,也没有看到实质性提示:潜在的危险就是编译错误不能定位,严重时甚至重装系统.本文介绍几个国内有 ...

  8. 访问Nginx报错

    今天新装Nginx,一切妥善后,访问虚拟机服务器的IP,结果发现响应超时 这是因为防火墙的80端口没有打开,在新装的Linux上搭服务器一般会遇到这个问题,重新开放80端口即可解决: (1)firew ...

  9. Linux学习笔记--vim

    Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. vim的三种模式 命令模式(Command mode),输入模式(Insert m ...

  10. TypeScript set get

    private _id:number; public get id():number{ return this._id; } public set id(value:number){ this._id ...