第一章 科学计数工具numpy numpy数据结构基础

'''
【课程1.2】  Numpy基础数据结构

NumPy数组是一个多维数组对象,称为ndarray。其由两部分组成:
① 实际的数据
② 描述这些数据的元数据

'''
import numpy as np#导入numpy模块
ar=np.array([1,2,3,4,5,6])#创建列表创建数组的简易方法
print('数组',ar)
print('列表:',[1,2,3,4,5])
数组 [1 2 3 4 5 6]
列表: [1, 2, 3, 4, 5]
ar1=np.array([[1,2,3,4,5,6],[2,3,4,5]])
print('一维数组:',ar1)

ar2=np.array([[1,2,3],[4,5,6],[7,8,9]])#二维数组,两行三列
print('二维数组:\n',ar2)
print('二维数组轴数:',ar2.ndim)#ar2.ndim返回数组的轴数,
#一维数组一行,二维数组至少一行一列,三维数组为多个二维数组,四维数组为多个三维数组,依次类推
一维数组: [[1, 2, 3, 4, 5, 6] [2, 3, 4, 5]]
二维数组:
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
二维数组轴数: 2
#常用方法
print('ar2数组:\n',ar2)
print('----------')
print('ar2数组轴数为:',ar2.ndim)
print('ar2数组维度为:',ar2.shape)#ar2数组3行3列
print('ar2数组元素个数为:',ar2.size)#元素个数
print('ar2数组数值元素类型为:',ar2.dtype)#元素数值类型
print('ar2数组数值大小',ar2.itemsize)
print(ar2.data)#数据元素的索引区
ar2数组:
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
----------
ar2数组轴数为: 2
ar2数组维度为: (3, 3)
ar2数组元素个数为: 9
ar2数组数值元素类型为: int32
ar2数组数值大小 4
<memory at 0x0000018DE7A411F8>
print(ar2)
print('------------')
ar#直接输出数组构成
[[1 2 3]
 [4 5 6]
 [7 8 9]]
------------
Out[48]:
array([[1, 2, 3, 4, 5, 6], [2, 3, 4, 5]], dtype=object)
#创建数组:array()函数,括号内可以是列表、元祖、数组、生成器等
ar1=np.array(range(10))
ar2=np.arange(10)
ar3=np.array([1,2,3,4,5])
ar4=np.array([[1,2,3,4,5],['a','b','c','d','e']])#如果元素数据类型一个为数值,一个为字符串,最终输出全为字符串
ar5=np.array([[1,2,3,4,5],['a','b','c','d']])#如果嵌套列表中的数值数不一样,最终为一维数组
ar6=np.array(np.random.rand(10).reshape(2,5))#生成随机数数组
print(ar1)
print('--------------')
print(ar2)
print('--------------')
print(ar3)
print('--------------')
print(ar4)
print('--------------')
print(ar5)
print(ar5.ndim)
print('--------------')
print(ar6)
print('--------------')
[0 1 2 3 4 5 6 7 8 9]
--------------
[0 1 2 3 4 5 6 7 8 9]
--------------
[1 2 3 4 5]
--------------
[['1' '2' '3' '4' '5']
 ['a' 'b' 'c' 'd' 'e']]
--------------
[[1, 2, 3, 4, 5] ['a', 'b', 'c', 'd']]
1
--------------
[[ 0.6318428   0.32501275  0.42983994  0.07853799  0.72838513]
 [ 0.46976417  0.25582106  0.2808683   0.05083352  0.98505281]]
--------------
#创建数组:arange(),类似range(),在给定间隔内返回均匀间隔的值
print(np.arange(10))#返回0-9,整数
print(np.arange(10.0))#返回0.0-9.0,浮点型
print(np.arange(5,12))#返回5-11
print(np.arange(5.0,12,2))#返回5.0-12.0,步长2
print(np.arange(10000))#如果数组太大而无法打印,numpy会自动跳过数组的中心部分,只打印边角
[0 1 2 3 4 5 6 7 8 9]
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]
[ 5  6  7  8  9 10 11]
[  5.   7.   9.  11.]
[   0    1    2 ..., 9997 9998 9999]
#创建数组:linspace():返回在[开始,停止]上计算的num个均匀间隔的样本
print(np.linspace(10,20,num=21))
print(np.linspace(10,20,num=21,endpoint=True))#是否包含最后一个值
s=np.linspace(10,20,num=21,retstep=True)#得到一个元祖数据,并显示步长
print(s)
print(type(s))
print(s[0])#第一个数据为生成的数组
[ 10.   10.5  11.   11.5  12.   12.5  13.   13.5  14.   14.5  15.   15.5
  16.   16.5  17.   17.5  18.   18.5  19.   19.5  20. ]
[ 10.   10.5  11.   11.5  12.   12.5  13.   13.5  14.   14.5  15.   15.5
  16.   16.5  17.   17.5  18.   18.5  19.   19.5  20. ]
(array([ 10. ,  10.5,  11. ,  11.5,  12. ,  12.5,  13. ,  13.5,  14. ,
        14.5,  15. ,  15.5,  16. ,  16.5,  17. ,  17.5,  18. ,  18.5,
        19. ,  19.5,  20. ]), 0.5)
<class 'tuple'>
[ 10.   10.5  11.   11.5  12.   12.5  13.   13.5  14.   14.5  15.   15.5
  16.   16.5  17.   17.5  18.   18.5  19.   19.5  20. ]
#创建数组:zeros()/zeros_like()/ones()/ones_like()
print(np.zeros((2,5)))#此处zeros为双括号
print(np.zeros((2,5),dtype=np.int))#数值类型指定为整数型
ar=np.array([list(range(10)),list(range(10,20))])
print(ar)
print(np.zeros_like(ar))
print('-------')
ar1=np.ones(9)#同zeros方法,不同是用1填充
ar2=np.ones((2,3,4))#同样为双括号,2个3行4列的3维数组
ar3=np.ones_like(ar3)
print(ar1)
print(ar2)
print(ar3)
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]
[[0 0 0 0 0]
 [0 0 0 0 0]]
[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]]
[[0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]]
-------
[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]
[[[ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]]

 [[ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]]]
[1 1 1 1 1]
#创建数组:eye()
print(np.eye(5))#创建一个正方形的矩阵数组,对角线为1,其余为0
[[ 1.  0.  0.  0.  0.]
 [ 0.  1.  0.  0.  0.]
 [ 0.  0.  1.  0.  0.]
 [ 0.  0.  0.  1.  0.]
 [ 0.  0.  0.  0.  1.]]

猜你喜欢

转载自www.cnblogs.com/yang905/p/9846509.html