Python3NumPy——ndarray对象
2018-06-18 02:42:01来源:未知 阅读 ()
1.前沿
2.创建ndarray对象
3.元素类型
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]
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Python shelve
- Python之对象持久化笔记 2019-08-13
- python之函数、面向对象 2019-08-13
- Python的面向对象2 2019-07-24
- Python之路【第九篇】:Python面向对象 2019-07-24
- python 之 并发编程(开启子进程的两种方式,进程对象的属性 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash