# -*- coding:utf-8 -*-
"""
@author: Fane
@file: numpyTest.py
@time:2017/8/9 21:15
"""
import numpy as np
def main():
#numpy的基本使用
lst=[[1,3,5],[2,4,6]]
print(type(lst))
np_lst=np.array(lst) #<type 'list'>
print (type(np_lst)) #<type 'numpy.ndarray'>
np_lst=np.array(lst,dtype=np.float)
print (np_lst.shape) #(2, 3)
print (np_lst.ndim) #2 维数
print (np_lst.dtype) #float64
print (np_lst.itemsize) #8 64位占用8个字节
print (np_lst.size) #6 元素个数
#常用固定数组
print ("常用固定数组")
print (np.zeros([2,4])) #元素为0的2行4列数组
print (np.ones([3,5])) #元素为1的3行5列数组
#随机数
print("Random:")
print (np.random.rand(2,4)) #2行4列的随机数组(元素0-1之间)
print (np.random.randn(2,4))#2行4列的标准正态分布的随机数组
print (np.random.rand()) #打印一个随机数
print ("RandInt:")
print (np.random.randint(1,10,3))#打印3个1到10之间的随机数
#输出选定数字中 的一个随机数
print (np.random.choice([10,20,30,2,6]))
#输出呈beta分布的1-10之间的100个数
print (np.random.beta(1,10,100))
#numpy的数组操作
#[ 1 2 3 4 5 6 7 8 9 10] 输出1到10的一维数组
print (np.arange(1,11))
#[[ 1 2 3 4 5] 以下两句都是把1-10分成2行5列的二维数组
# [ 6 7 8 9 10]] -1就是自动分为2行,列数自动填充
print (np.arange(1,11).reshape([2,5]))
print (np.arange(1, 11).reshape([2, -1]))
list=np.arange(1,11).reshape([2,-1])
print ("exp:")
print(np.exp(list)) #自然指数
print(np.exp2(list)) #自然指数的平方
print(np.sqrt(list)) #开方
print(np.sin(list)) #三角函数
print(np.log(list)) #取对数
list2=np.array([[[1,2,3,4],[4,5,6,7]],
[[7,8,9,10],[10,11,12,13]],
[[14,15,16,17],[18,19,20,21]]])
#list2为3个2维数组的集合数组
#axis表示计算的深入维度,axis的值越大越深入细化
print (list2.sum(axis=0))
#输出结果为[[1+7+14,2+8+15,3+9+16,...[,,]]以此类推的两行四列的数组
print (list2.sum(axis=1)) #输出结果为[[1+4,2+5,3+6,4+7],[7+10]...[,,]] 以此类推的三行四列的数组
print (list2.sum(axis=2))
#输出结果为[[1+2+3+4,4+5+6+7],[7+8+9+10,10+11+12+13],[,]] 以此类推的三行两列的数组
print ("max and min")
print (list2.max(axis=2))
print (list2.min(axis=0))
ls1 = np.array([4,20,30,40])
ls2 = np.array([10,3,2,1])
print (ls1+ls2) #可以对数组做加减乘除,平方等等
print (ls1-ls2)
print (ls1**2) #平方
#数组点乘
print(np.dot(ls1.reshape(2,2),ls2.reshape(2,2)))
#先转化为2x2的两个数组,然后dot点乘
print ("数组的拆分合并:")
print (np.concatenate((ls1,ls2),axis=0))
#合并为一维数组
print (np.vstack((ls1,ls2))) #合并为二维数组
print (np.hstack((ls1,ls2))) #合并为一维数组
print (np.split(ls1,2)) #把ls1分成等长的两个数组
print (np.copy(ls1)) #数组拷贝
#数组的矩阵与线性方程
from numpy.linalg import * #引入包
print (np.eye(3)) #三阶单位矩阵
lst = np.array([[1,2],[3,4]])
print (inv(lst)) #逆矩阵
print (lst.transpose()) #转置矩阵
print (det(lst)) #行列式
print (eig(lst)) #特征值与特征向量
y= np.array([[5.],[7.]])
print (solve(lst,y))
#求解lst和y组成的方程组 x+2y=5 3x+4y=7 得出结果x=-3,y=4
#numpy 的其他应用
print (np.fft.fft(np.array([1,1,1,1,1,1,1,1,])))
#fft信号处理
print(np.corrcoef([1,0,1],[0,2,1])) #吉尔逊相关系数
#生成一元多次函数2x+x+3
if __name__=="__main__":
main()
python数据分析之numpy自学
最新推荐文章于 2024-08-21 17:33:54 发布