numpy的学习之1

列表生成式需要学习
//常规方法
import time
a = list(range(int(10e6)))
t1 = time.time()
a2 = [i * 2 for i in a]
t2 = time.time()
print(type(t1)) #type float
print(t2-t1) # 0.601 second

//numpy方法
import time
import numpy as np
na = np.array(range(int(10e6)))
t1 = time.time()
a2 = na * 2
t2 = time.time()
print(t2-t1) # 0.01 second
天下事,不得了,了不得,到最后,不了了之
世间人,千般计,计千般,至终日,尽计计空

//创建numpy数组的三种方法
import numpy as np
v = np.array([1, 2, 3, 4])
print(v)
print(type(v))
m = np.array([[1, 2], [3, 4]])
print(m)
print(type(m))
np1 = np.arange(10)
print(np1)
np2 = np.linspace(1, 100, 30)
print(type(np2))

//linspace图形(纬度)属性
import numpy as np
v = np.linspace(0, 10, 20)
print(v.shape)
v2 = v.reshape(4, 5) # 4行5列
print(v2.shape)
v3 = v.reshape(2, 5, 2)
print(v3.shape) #out 2, 5, 2
print(v3.size)
print(v3.dtype) #创建的类型
tmp2 = np.array([1,2,3], dtype=‘int’) #指定类型
print(tmp2.dtype)

//所有元素bool值
import numpy as np
print(np.ones((3, 5), dtype=‘int’) == 1) #所有元素都为true
print(np.zeros((3, 5)) == 1) #所有元素都为false

//数组纬度变换
import numpy as np
na = np.arange(100)
print(na)
print(na.shape)
nb = na.reshape((20, 5))
print(nb)
print(nb.shape)
nc = nb.reshape((100,))
print(nc.shape)

//numpy索引的基本使用
import numpy as np
na = np.arange(100)
nb = na.reshape((20, 5))
print(nb)
print(nb[0]) #截取第一行数据
nc = nb[:3] #截取第一行到第3行数据
print(nc)
nd = nb[:, 0] #选择第一列数据
print(nd)
ne = nb[:, :3] #截取第一列到第3列数据
print(ne)
nf = nb[:3, :3] #截取前3行3列数据
print(nf)

//numpy筛选学习
import numpy as np
na = np.arange(100)
nb = na.reshape((20, 5))

筛选能被3整除的数据

nc = [nb % 3 == 0] # 输出true或者false
nc = nb[nb % 3 == 0]
print(nc) # 所有元素都被3整除
nd = nb[nb < 9] # 小于9的元素
print(nd)

//提取数组元素奇数,并使其替换为-1
import numpy as np
na = np.arange(100)
nb = na.reshape((20, 5))

nc = nb[nb % 2 != 0] # 奇数

nd = np.where(nb % 2 != 0, -1, nb)
print(nd)

//二维数组交换2列
import numpy as np
na = np.arange(100)
nb = na.reshape((20, 5))
mask = list(range(5))
mask[1], mask[3] = mask[3], mask[1]
nc = nb[:, mask] #交换第1列和第3列数据
print(nc)

//⽣成数值 5~10 ,shape 为 (3,5) 的随机浮点数
import numpy as np
pat1 = np.random.randint(5, 10, (3, 5))

print(pat1)

rand-》0-1之间取值范围

pat2 = np.random.rand(3, 5)

print(pat2)

part3 = pat1 + pat2
print(part3)

//数据归一化案例
import numpy as np
url = ‘https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data’
wid = np.genfromtxt(url, delimiter=‘,’, dtype=‘float’, usecols=[1]) # 返回第一列
print(wid)
print(wid.shape)
smax = np.max(wid)
smin = np.min(wid)
np.set_printoptions(precision=3) # 调整精度为3
print((wid - smin)/(smax-smin)) # 归一化

//# numpy元素级操作
import numpy as np
v1 = np.arange(5)
v2 = v1.reshape((1, 5))
print(v2)
v4 = np.arange(15).reshape((3, 5))
print(v4)
v5 = v2 + v4 # numpy的广播机制,v2复制了3份
print(v5)

numpy做矩阵点乘

import numpy as np
v1 = np.arange(3).reshape(1, 3)
print(v1) # [[0 1 2]]

print(v1.shape)

v2 = np.arange(6).reshape((3, 2))
print(v2)
v3 = np.array([00 + 12 + 24, 01 + 10 + 13 + 2*5])
print(v3)
v4 = np.dot(v1, v2) # 数组的点乘方法1
print(type(v4)) # <class ‘numpy.ndarray’>
v5 = np.matrix(v1) * np.matrix(v2) # 数组的点乘方法2
print(type(v5)) # <class ‘numpy.matrix’>

numpy求平均值,求和

import numpy as np
arr = np.random.randint(1, 10, (3, 4))
print(arr)
ret = arr.mean() # 所有数据的平均值
print(ret)
print(arr.mean(axis=1)) # 按行求平均值
print(arr.mean(axis=0)) # 按列求平均值
print(arr.sum()) # 求所有的和
print(arr.sum(axis=1)) # 按行求和
print(arr.sum(axis=0)) # 按行求和

numpy求标准差和方差

import numpy as np
arr = np.arange(6).reshape(2, 3)
rst1 = arr.var(axis=1)
print(rst1) # 输出标准差
print(np.sqrt(rst1)) # 输出方差
print(arr.std(axis=1)) # 直接用api求方差
print(arr.std()) # 整个数组的标准差
print(arr.var()) # 整个数组的方差

numpy求最大值和最小值

import numpy as np
arr = np.random.randint(1, 50, (3, 4))
print(arr)
print(arr.max())
print(arr.max(axis=0)) # 列的最大值
print(arr.min(axis=0)) # 列的最小值

numpy求累乘,求累和

import numpy as np
arr = np.array([3, 1, 2]) # 一维数组累和
print(arr.cumsum()) # 求累和 输出 3 4 6
arr1 = np.random.randint(1, 5, (2, 3))
print(arr1)
print(arr1.cumsum(axis=0)) # 列的累和
print(arr1.cumprod(axis=0)) # 列的累乘

numpy求迹(主对角线的和(左上1开始到右下))

import numpy as np
arr = np.random.randint(1, 5, (3, 3)) # 二维数组求迹
print(arr)
print(arr.trace())
arr2 = np.random.randint(1, 10, (2, 3, 4)) # 多维数组求迹
print(arr2)
print(arr2.trace(axis1=1, axis2=2))

高维数组变为向量(flatten和ravel)

import numpy as np
arr = np.random.randint(1, 10, (2, 3))
print(arr)
print(arr.flatten()) # 按行展平
arr.flatten(‘F’)[0] = 65
print(arr.flatten(‘F’)) # 按列展平,原数组没有变化(新的拷贝)
arr.ravel()[0] = 666
print(arr.ravel(‘F’)) # 按列展平 原数组已经修改(在原有的对象上展平)

增加删除⼀个维度

import numpy as np
arr = np.random.randint(1, 10, 3)
arr1 = np.expand_dims(arr, 1) # 增加一个维度 列上增加
print(arr1)
print(arr1.shape)
a2 = np.expand_dims(np.expand_dims(arr, 0), 0) # 增加两个维度
print(a2)
print(a2.shape)
a3 = np.squeeze(np.squeeze(a2, 0), 0) # 删除一个维度
print(a3)
print(a3.shape)
arr = arr[np.newaxis, :] # arr[:, np.newaxis] # 列上增加
print(arr)
print(arr.shape)

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值