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. TFrame bug

    delphi 10.1.2 工程里有很多fram 正确的工程文件dproj中fram的定义是 <DCCReference Include="Unit15frame.pas"& ...

  2. WDA-5-VIEW视图切换

    这一部分介绍同一窗口下不同视图之间的链接跳转. 前提:完成上一步骤MAIN视图ALV显示. 1.效果展示 点击ALV物料下划线链接,页面跳转到物料明细页面. 2.实现过程 基于上一步骤在MAIN页面显 ...

  3. C# 2018.9.17

    C#的优点:1,不会有运行时崩溃,解决了C++的痛点一,难预防,难查错2,使用文件不需要包含进来,只需要using namespace即可,解决了C++的痛点二,包含复杂,路径复杂,编译复杂3,编译速 ...

  4. for里的上一个/下一个下标的安全写法

    const len:int=10; for(var:int=0;i<len;i++){ var previ:int=(i-1+len)%len; var nexti:int=(i+1)%len; ...

  5. 一个docker镜像中的目录删除不了问题

    在一个容器中,删除一个目录,失败: bash-4.2# pwd /home/zxcdn/ottcache/tomcat bash-4.2# uname -a Linux 3516b6c97679 -. ...

  6. 如何遍历List对象

    for(String str : list) {//其内部实质上还是调用了迭代器遍历方式,这种循环方式还有其他限制,不建议使用. System.out.println(str); } .普通for循环 ...

  7. ServiceWorker和WebWorker

    在google打上关键字 service worker 空格进行搜索 参考地址 (Web_worker)[https://en.wikipedia.org/wiki/Web_worker] (serv ...

  8. KVM虚拟化技术(五)虚拟机管理

    一.为了提高内存.硬盘.网络的性能,需要支持半虚拟化:virtio半虚拟化驱动 二.对虚拟机的管理都是通过libvirt:所有必须要启用一个守护程序libvirtd. 三.virt-manager ① ...

  9. 7.final关键字.md

    1.final类型变量 定义:被final修饰的变量,一旦被赋初值后,则final类型变量的值就不能再改变. 1.1成员变量 final修饰的成员变量必须显式的赋初值. 赋值的位置: •类变量:静态初 ...

  10. shell-保留文件系统下剩余指定数目的文件

       path_backup=/mnt/fifth/backup/shellbackup  path_delete=/mnt/fifth/tmp/rubbish/  limit_num=15    f ...