数据分析-numpy1
文章目录
- numpy
- array创建数组
- arange()生成区间数组
- numpy数组属性
- 切片和索引
- numpy广播机制
numpy
- numpy是什么?
- 使用Numpy可以方便的使用数组、矩阵进行计算
- 包含线性代数、傅里叶变换、随机生成等大量函数
- numpy创建数组
array创建数组
引入numpy
import numpy as np
元组
np.array((1,2,3,4,5))
数组
a=np.array([1,2,3,4,5])
b=np.array(a)
#b=a
迭代对象
np.array(range(10))
生成器
np.array([i**2 for i in range(10)])
- 练习1:创建10以内偶数的数组
import numpy as np
a=np.array([i for i in range(10) if i%2==0])
- 设置dtype参数,默认自动识别
a=np.array([1,2,3,4,5])
has_dtype_a=np.array([1,2,3,4,5],dtype='float')
结果:array([1.,2.,3.,4.,5.])
思考:将浮点设置成整型
np.array([1.1,2.5,3.8,4,5],dtype='int') #强制转换直接取整
结果:[1,2,3,4,5]
- 设置coppy参数,默认为True
a=np.array([1,2,3,4,5])
b=np.array(a)
print('a',id(a),' b',id(b))
#两者地址不同
a=np.array([1,2,3,4,5])
b=a
#两者地址相同
a=np.array([1,2,3,4,5])
b=np.array(a,copy=False)
#两者地址相同
- ndmin用于指定数组的维度
a=np.array([1,2,3],ndmin=2)
a.ndim
- subok参数,类型为bool值,默认False。为True,使用object的内部数据类型;False:使用数组的数据类型
#创建一个矩阵
a=np.mat([1,2,3,4])
#复制副本,保持原类型
b=np.array(a.subok=True)
c=np.array(a) #默认为False
#a、b类型相同
arange()生成区间数组
np.arange(3.1)
#array[0.,1.,2.,3.]
np.arange(5,dtype=float)
#array[0.,1.,2.,3.,4.,5.]
- linspace()等差数列
#包含终止值
a=np.linspace(2.0,5.0,num=5,endpoint=False)
- logspace()等比数列
a=np.logspace(0,9,10,base=2)
#省略base,默认为10
numpy数组属性
- ndarray.shape
返回一个包含数组维度的元组,对于矩阵,n行m列,它也可以用于调整数组维度
- 调整维度reshape
a=np.arange(20).reshape((4,5))
- 调整维度resize
切片和索引
ar1=np.arange(10)
ar2=ar1[2:7:2]
结果:ar2([2,4,6])
注意
1:切片可以使用省略号"…",如果在行位置,打印所有行元素。反之,则包含所有列元素
2:返回第二列后所有元素ar4[…,1:]
3:返回第二列后的所有项 ar4[…][1]
numpy广播机制
a=np.array([1,2,3,4])
b=np.array([10,20,30,40])
c=a*b
print(c)
a=np.array([[0,0,0],
[10,10,10],
[20,20,20],
[30,30,30]
])
b=np.array([0,1,2])
print((a+b))
结果:
[[ 0 1 2]
[10 11 12]
[20 21 22]
[30 31 32]]
- 广播规则