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对象的更多相关文章

  1. Numpy Ndarray对象

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

  2. ndarray对象的使用方法

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

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

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

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

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

  5. NumPy Ndarray 对象

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

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

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

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

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

  8. Numpy | 02 Ndarray 对象

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

  9. Numpy Ndarray对象1

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

随机推荐

  1. python 历险记(四)— python 中常用的 json 操作

    目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编码和解码? 常用的 json 操作有哪些? json 操作需要什么库? 如何 ...

  2. centos 6.5环境下分布式文件系统MogileFS工作原理及分布式部署实现过程

    MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上 MogileFS由3个部分组成:    第1个部分:是server端, ...

  3. Ex 6_26 序列对齐..._第七次作业

  4. 【可视化】DataV接入ECharts图表库 可视化利器强强联手

    DataV接入ECharts图表库 可视化利器强强联手 摘要: 两个扛把子级产品的结合,而且文末有彩蛋. DataV 数据可视化是搭建每年天猫双十一作战大屏的幕后功臣,ECharts 是广受数据可视化 ...

  5. hdu5256 二分求LIS+思维

    解题的思路很巧,为了让每个数之间都留出对应的上升空间,使a[i]=a[i]-i,然后再求LIS 另外二分求LIS是比较快的 #include<bits/stdc++.h> #define ...

  6. js字符串转换成数字与数字转换成字符串的实现方法

    转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...

  7. centos7 下安装配置python3.6

    一.首先,官网下载python3的所需版本. wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 二.然后,解压缩文件> ...

  8. 在.NET环境下使用KAFKA

    近日基于项目的解耦与削峰需求,决定在项目中引入消息队列.因为同时项目部分业务已经迁移到Java上,所以消息队列组件又要兼顾Java环境下的使用,选来选去对比了RabbitMQ.RocketMQ和Kaf ...

  9. 【BZOJ 3294】[Cqoi2011]放棋子

    题解: 一道很经典的组合数+dp 首先考虑f[i][j][k]表示前k种颜色正好占据了i行j列 转移的话就是枚举第k种颜色占据了几行几列 通过自身转移 然后其在内部的相对顺序是不确定的所以要乘以组合数 ...

  10. 【Java】 剑指offer(61) 扑克牌的顺子

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连 ...