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的为: <class 'numpy.int32'>
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]
Python3NumPy——ndarray对象的更多相关文章
- Numpy Ndarray对象
Numpy 最重要的一个特点是 N 维数组对象 ndarrary ,它是一系列同类型数据的集合,以 0 下标为开始进行集合中的索引. ndarray 对象是用于存放同类型元素的多维数组. ndarra ...
- ndarray对象的使用方法
ndarray的基本操作 1.索引 基本索引:一维与list完全一致 多维同理 例如: import numpy ndarr1 = numpy.random.randint(0,10.size=5) ...
- NumPy-快速处理数据--ndarray对象--数组的创建和存取
本文摘自<用Python做科学计算>,版权归原作者所有. 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内存结构
本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到: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个指针和三 ...
随机推荐
- 嵌入式系统C编程之堆栈回溯
前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况.一般可按需添加打印信息,以便观察程序执行流或变量值是否异常.然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱.此外 ...
- C# 将任意对象快速转换为Json
由于最近项目里面Model类特别多,而我需要编写所有数据交互的接口,传输的格式是json,以前都是通过循环List<T>中的对象向StringBuilder对象中Apped字符串生成jso ...
- 重新学习angularjs--第一篇(入门)
几乎是一年之前,泛泛接触了angularjs,也做了一些项目,但是时至今日,几乎已经忘记了ng的使用,由于业务需要,近日要攻克这座难关,重新学习.会把学习的一些东西拿出来,记录之. angularjs ...
- oracle:储存过程实现分页
CREATE OR REPLACE PACKAGE PKG_QUERY IS -- Author : ADMINISTRATOR -- Created : 2016/12/8 星期四 10:28:37 ...
- __dirname与__filename
(1) __filename变量 node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名. 在应用程序根目录下新建app.js文件,其中代码如 ...
- Python 正则表达式模块 (re) 简介
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...
- 安装httpd过程,将网站部署到httpd过程
1,配置DNSvi /etc/resolv.conf 加入以下代码 nameserver 192.168.0.1 nameserver 8.8.8.8 nameserver 8.8.4.4 2.输入y ...
- PHP PC端微信扫码支付【模式二】详细教程-附带源码(转)
博主写这破玩意儿的时候花了大概快两天时间才整体的弄懂逻辑,考虑了一下~还是把所有代码都放出来给大家~抱着开源大无私的精神!谁叫我擅长拍黄片呢?同时也感谢我刚入行时候那些无私帮过我的程序员们! 首先还是 ...
- RDLC 主从报表筛选
今天继续学习RDLC报表的“参数传递”及“主从报表” 一.先创建DataSet,如下图: 二.创建一个报表rptDEPT.rdlc,显示部门T_DPET的数据 三.嵌入Default.aspx中,写在 ...
- Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
1:Hibernate的关联关系映射的一对一外键映射: 1.1:第一首先引包,省略 1.2:第二创建实体类: 这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信 ...