python中ndarray对象_Python3NumPy——ndarray对象

Python3NumPy——ndarray对象

1.前沿

推荐导入语法:import numpy as np

NumPy中使用ndarray对象表示数组,ndarray是NumPy库的核心对象

2.创建ndarray对象

函数array()传递Python序列创建数组

import numpy as np #导入Numpy库,给出别名为np

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

print('-'*20 + '第EX1个例子' + '-'*20)

print('EX1=>传递参数为单列表,创建的1维数组x1为: {}'.format(x1))

print('EX1=>x1的形状为元组类型: {}'.format(x1.shape))

print('-'*20 + '第EX2个例子' + '-'*20)

x2 = np.array([[1,2,3],[4,5,6],[7,8,9]])

print('EX2=>传递参数为嵌套列表,创建的2维数组x2为: \n{}'.format(x2))

print('EX2=>x2的形状为元组类型: {}'.format(x2.shape))

print('-'*20 + '第EX3个例子' + '-'*20)

x3 = np.array((7,8,9,10))

print('EX3=>传递参数为单元组,创建的1维数组x3为: {}'.format(x3))

print('EX3=>x3的形状为元组类型: {}'.format(x3.shape))

print('-'*20 + 'End' + '-'*20)

--------------------第EX1个例子--------------------

EX1=>传递参数为单列表,创建的1维数组x1为: [1 2 3 4 5 6]

EX1=>x1的形状为元组类型: (6,)

--------------------第EX2个例子--------------------

EX2=>传递参数为嵌套列表,创建的2维数组x2为:

[[1 2 3]

[4 5 6]

[7 8 9]]

EX2=>x2的形状为元组类型: (3, 3)

--------------------第EX3个例子--------------------

EX3=>传递参数为单元组,创建的1维数组x3为: [ 7 8 9 10]

EX3=>x3的形状为元组类型: (4,)

--------------------End--------------------

Note:补充知识=》修改数组形状,修改后的形状后,其元素在内存中的位置并未改变;只是改变了轴的长度。

X = np.array([[1,2,3,4],[5,6,7,8],[7,8,9,10]])#X传递参数为嵌套列表,创建的2维

print('原型状数组X为(3行,4列): \n{}'.format(X))

print('X的形状为元组类型(0轴长度为3,1轴为4): {}'.format(X.shape))

print('-'*20 + '第一次修改X的形状' + '-'*20)

X.shape = 4, 3

print('第一次修改形状后数组X为(4行,3列): \n{}'.format(X))

print('-'*20 + '第二次修改X的形状' + '-'*20)

X.shape = 2, -1 # -1表示自动计算1轴的长度,结果为6

print('第二次修改形状后数组X为(2行,6列): \n{}'.format(X))

print('='*50)

print('-'*20 + '指定形状数组:reshape()方法' + '-'*20)

a = np.array([1,2,3,4,5,6,7,8,9])

print('原型状数组a为(1行,9列): \n{}'.format(a))

a1 = a.reshape((3,3))

print('变换为3X3数组a1为(3行,3列): \n{}'.format(a1))

print('再次打印a数组为: \n{}'.format(a))

a[0] = 100

print('修改a的第一个元素的值为100后a为: \n{}'.format(a))

print('修改a的第一个元素的值为100后a1为: \n{}'.format(a1))

print('表明:a和a1共享存储空间')

原型状数组X为(3行,4列):

[[ 1 2 3 4]

[ 5 6 7 8]

[ 7 8 9 10]]

X的形状为元组类型(0轴长度为3,1轴为4): (3, 4)

--------------------第一次修改X的形状--------------------

第一次修改形状后数组X为(4行,3列):

[[ 1 2 3]

[ 4 5 6]

[ 7 8 7]

[ 8 9 10]]

--------------------第二次修改X的形状--------------------

第二次修改形状后数组X为(2行,6列):

[[ 1 2 3 4 5 6]

[ 7 8 7 8 9 10]]

==================================================

--------------------指定形状数组:reshape()方法--------------------

原型状数组a为(1行,9列):

[1 2 3 4 5 6 7 8 9]

变换为3X3数组a1为(3行,3列):

[[1 2 3]

[4 5 6]

[7 8 9]]

再次打印a数组为:

[1 2 3 4 5 6 7 8 9]

修改a的第一个元素的值为100后a为:

[100 2 3 4 5 6 7 8 9]

修改a的第一个元素的值为100后a1为:

[[100 2 3]

[ 4 5 6]

[ 7 8 9]]

表明:a和a1共享存储空间

3.元素类型

采用dtype属性获取

创建ndarray对象时,可以指定元素类型

元素数据类型转换方法:astype()

xi = np.array([1,2,3,4],dtype=np.int32) #指定整形

print('xi的类型为: {}'.format(xi.dtype))

print('-'*20 + 'End' + '-'*20)

xf = np.array([1,2,3,4],dtype=np.float) #指定浮点型

print('xf的类型为: {}'.format(xf.dtype))

print('-'*20 + 'End' + '-'*20)

xc = np.array([1,2,3,4],dtype=np.complex) #指定为复数型

print('xc的类型为: {}'.format(xc.dtype))

print('-'*20 + 'End' + '-'*20)

xi的类型为: int32

--------------------End--------------------

xf的类型为: float64

--------------------End--------------------

xc的类型为: complex128

--------------------End--------------------

print("numpy中去重的数据类型:")

set(np.typeDict.values())

numpy中去重的数据类型:

{numpy.uint16,

numpy.complex64,

numpy.complex128,

numpy.timedelta64,

numpy.int32,

numpy.uint8,

numpy.float64,

numpy.void,

numpy.int64,

numpy.uint32,

numpy.object_,

numpy.int8,

numpy.int32,

numpy.uint64,

numpy.int16,

numpy.uint32,

numpy.str_,

numpy.datetime64,

numpy.float32,

numpy.bool_,

numpy.float64,

numpy.complex128,

numpy.float16,

numpy.bytes_}

print('xi.dtype的为: {}'.format(xi.dtype))

print('xi.dtype.type的为: {}'.format(xi.dtype.type))

xi.dtype的为: int32

xi.dtype.type的为:

print('-'*20 + '数据类型导致的溢出问题' + '-'*20)

xi16 = np.int16(200)

print('xi16 X xi16的结果溢出,计算出现错误: {}'.format(xi16*xi16))

--------------------数据类型导致的溢出问题--------------------

xi16 X xi16的结果溢出,计算出现错误: -25536

C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:3: RuntimeWarning: overflow encountered in short_scalars

app.launch_new_instance()

NumPy的数值对象的运算速度比Python的内置类型的运算速度慢很多,如果程序中需要大量地单个数值运算,避免使用NumPy的数值对象。

print('-'*20 + '数据类型导致的时间问题' + '-'*20)

v1 = 3.14

v2 = np.float64(v1)

%timeit v1*v1

%timeit v2*v2

--------------------数据类型导致的时间问题--------------------

10000000 loops, best of 3: 46.6 ns per loop

The slowest run took 35.90 times longer than the fastest. This could mean that an intermediate result is being cached.

10000000 loops, best of 3: 129 ns per loop

t1 = np.array((1,2,3,4,5), dtype=np.float)

print('转换数据类型为int32')

t11 = t1.astype(np.int32)

print(t11)

print('-'*40)

t2 = np.array((1,2,3,4), dtype=np.complex)

print('转换数据类型为complex64')

t22 = t2.astype(np.complex64)

print(t22)

转换数据类型为int32

[1 2 3 4 5]

----------------------------------------

转换数据类型为complex64

[1.+0.j 2.+0.j 3.+0.j 4.+0.j]

Numpy Ndarray对象

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

ndarray对象的使用方法

ndarray的基本操作 1.索引 基本索引:一维与list完全一致 多维同理 例如: import numpy ndarr1 = numpy.random.randint(0,10.size=5) ...

NumPy-快速处理数据--ndarray对象--数组的创建和存取

本文摘自,版权归原作者所有. NumPy为Python提供了快速的多维数组处理的能力,而SciPy则在NumPy基础上添加了众多的科学计算所需的各种工具包,有了 ...

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

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

NumPy Ndarray 对象

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

NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

本文摘自,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...

numpy模块(对矩阵的处理,ndarray对象)

6.12自我总结 一.numpy模块 import numpy as np约定俗称要把他变成np 1.模块官方文档地址 https://docs.scipy.org/doc/numpy/referen ...

Numpy | 02 Ndarray 对象

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

Numpy Ndarray对象1

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

随机推荐

VS2015企业版本(安装包+key)+ .NET Reflector 9.0

Reflector9.0系下载:https://yunpan.cn/cMQj9zWbffSqy  访问密码 55eb VS2015中文企业版: http://pan.baidu.com/s/1eRIo ...

菜单的隐藏&显示

//还是先上万一老师的原代码 //隐藏与显示菜单Self.Menu := nil; {隐藏菜单} Self.Menu := MainMenu1; {显示菜单} //初一看到代码,我有点抓不到感觉的意思 ...

引入HBase依赖包带来的麻烦

在一个项目里用到HBase做底层存储,使用maven来管理相关Jar包依赖,用maven来管理依赖包,特别不爽的就是他会将你引入Jar包自己的依赖都搞进来,经常会出现一些类和方法冲突找不到等状况.这次 ...

OpenCL memory object 之 传输优化

转载自:http://www.cnblogs.com/mikewolf2002/archive/2011/12/18/2291741.html 首先我们了解一些优化时候的术语及其定义: 1.defer ...

tooltip 鼠标移动上去出现图片或文字与title大同小异

代码如下:

apigw鉴权分析(1-3)百度 AI - 鉴权方式分析

http://ai.baidu.com/docs#/Begin/top 一.访问入口 二.鉴权方式分析 1.鉴权认证方式一 - access_token - 针对HTTP API调用者 2.鉴权认证方 ...

Oracle的条件in中包含NULL时的处理

我们在写SQL时经常会用到in条件,如果in包含的值都是非NULL值,那么没有特殊的,但是如果in中的值包含null值(比如in后面跟一个子查询,子查询返回的结果有NULL值),Oracle又会怎么处 ...

用Canvas实现一些简单的图片滤镜

1.灰度滤镜 对于灰度滤镜的实现一般有三种算法 1) 最大值法:即新的颜色值R=G=B=Max(R,G,B),通过这种方法处理后的图片看起来亮度值偏高. 2) 平均值法:即新的颜色值R=G=B=(R+ ...

#WEB安全基础 : HTTP协议 | 0x8 HTTP的Cookie技术

说道Cookie,你喜欢吃饼干吗? 这里的Cookie不是饼干=_= HTTP不对请求和响应的通信状态进行保存,所以被称为无状态协议,为了保持状态和协议功能引入了Cookie技术 Cookie技术在请 ...

python的pickle和shelve模块

python中用于序列化的模块总结 目录 pickle模块 shelve模块 xml模块 pickle模块 介绍 Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python, ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值