博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy基础一
阅读量:5887 次
发布时间:2019-06-19

本文共 10894 字,大约阅读时间需要 36 分钟。

常用,常忘

1.随机矩阵

np.random.rand(4,3)array([[ 0.06679473,  0.71073515,  0.5694172 ],       [ 0.95018143,  0.60161401,  0.8076899 ],       [ 0.40341822,  0.72154255,  0.92283012],       [ 0.81143322,  0.87853742,  0.38013707]])np.random.randint(0,10,(4,3))array([[1, 9, 5],       [6, 1, 1],       [8, 2, 0],       [3, 4, 3]])

numpy概览

import numpy as nparray=np.array([1,2,3,4])array.shape(4,)array2=np.array([[1,2,3,4],[2,3,4,1]])array2.shape(2, 4)array3=np.array([[1,2,3,4],[2,3,4,1]])type(array3)numpy.ndarray

np.array的结构

1. dtype  数据类型2. itemsize 占了多少字节3. shape  形状4. size  数据个数5. ndim  维度6. fill填充7. 索引和切片* 要求array里面的数据是同一种类型,如果不是,numpy会转为一种* int
import numpy as nparray1=np.array([1,2,3,4])array1.dtype# >>>  dtype('int32')array2=np.array([1,2,3,4.5])array2.dtype#>>>  dtype('float64')array3=np.array([1,'2',3,4.5])array3.dtype#>>>dtype('
>> nt32#>>> 4#>>> (3, 3)#>>> 9#>>> 2weidu2=np.array([[1,2,3],[1,3,2],[4,2,1]])weidu2.fill(0)print(weidu2)# >>>[[0 0 0] [0 0 0] [0 0 0]]

矩阵格式(多维的形式)

  1. 多维度的取值方式和list不同
  2. nb.array.copy 深度复制
  3. arange(0,100,10) 0到100 , 差值10构造等差数组
  4. 布尔数组作为索引取值
  5. 随机值random.rand(10) 0到1制作10个随机数 生成np数组
weidu3=np.array([[1,2,3],[1,3,2],[4,2,1]])print(weidu3[1,1])print(weidu[:,1]) #每一行的第二个数print(weidu[:,0:2]) #每一行的第一和第二个数weidu[:,0:2][0,1]#>>>3[2 3 2][[1 2] [1 3] [4 2]]2one=np.array([[1,2],[3,4]])oneCopy=one.copy()oneCopy[0,1]=100print(one)print(oneCopy)#>>>[[1 2] [3 4]][[  1 100] [  3   4]]pan_array=np.array([1,2,3,4,5,6],dtype=np.float32)print(pan_array)print(pan_array.dtype)print(pan_array.nbytes) # 32位 四个字节 * 6 =24B#>>>[1. 2. 3. 4. 5. 6.]float3224

布尔数组作为索引取值

indexs=np.array([0,1,0,2,0,1,0],dtype=bool)print(indexs)numbers=np.array([10,20,30,4,5,7,8])result=numbers[indexs]  #在索引为true的地方取值print(result)#>>>>[False  True False  True False  True False][20  4  7]

随机数转化为布尔值

random_array=np.random.rand(10)print(random_array)boolarray=random_array>0.5print(boolarray)#>>>[0.18501146 0.03588    0.04643065 0.88957392 0.15500452 0.49480942 0.28144087 0.83287192 0.72878256 0.66462199][False False False  True False False False  True  True  True]

按条件找到索引

array_index=np.array([1,2,3,4,5,6,8,2,1,3,11,6,8,12])result=np.where(array_index > 8)print(result)print(array_index[np.where(array_index > 8)])#>>>(array([10, 13], dtype=int64),)[11 12]

np.asarray 重新给np.array指定数值类型---深度copy

pan_int32=np.array([1,2,3],dtype=np.int32)pan_float32=np.asarray(pan_int32,dtype=np.float32)print(pan_float32)print(pan_int32)

np.array的数值计算

  1. sum 求和
  2. prod 求积
  3. min 最小值
  4. max 最大值
  5. argmin最小值的索引
  6. argmax最大值的索引
  7. mean求平均值
  8. std 标准差
  9. var 方差
  10. clip 限定边界值
  11. round
  12. 轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。
import numpy as nppan_array=np.array([[1,2,3],[1,2,3]])print(pan_array)print(pan_array.ndim)

sum

np.sum(pan_array)#>>> 12

指定操作沿着什么轴进行

np.sum(pan_array,axis=0)#>>> array([2, 4, 6])np.sum(pan_array,axis=1)#>>> array([6, 6])

-1指定最后一个维度

np.sum(pan_array,axis=-1)#>>>array([6, 6])

prod 求积

array_prod=np.array([[1,2,3,4],[2,2,3,5]])array_prod.prod()#>>> 1440array_prod.prod(axis=0)#>>>array([ 2,  4,  9, 20])array_prod.prod(axis=1)#>>>array([24, 60])array_prod.prod(axis=-1)#>>>array([24, 60])

min最小值

array_min=np.array([[1,22,3,5],[1,12,6,7]])array_min.min()#>>>1array_min.min(axis=0)#>>>array([ 1, 12,  3,  5])array([ 1, 12,  3,  5])#>>>array([1, 1])

max最大值

array_max=np.array([[1,2,3,4,5],[5,4,3,2,1]])array_max.max()#>>>5array_max.max(axis=0)#>>>array([5, 4, 3, 4, 5])array_max.max(axis=1)#>>>array([5, 5])

argmin最小值索引

argmin=np.array([[1,2,3],[2,1,4]])argmin.argmin()#>>>0argmin.argmin(axis=0)#>>>array([0, 1, 0], dtype=int64)argmin.argmin(axis=1)#>>>array([0, 1], dtype=int64)

argmax

argmax=np.array([[12,5,77,1],[2,3,4,6]])argmax.argmax()#>>>2argmax.argmax(axis=0)#>>>array([0, 0, 0, 1], dtype=int64)argmax.argmax(axis=1)#>>>array([2, 3], dtype=int64)

mean 平均值

array_mean=np.array([[1,2,3,4],[2,3,4,5]])array_mean.mean()#>>>3.0array_mean.mean(axis=0)#>>>array([1.5, 2.5, 3.5, 4.5])array_mean.mean(axis=1)#>>>array([2.5, 3.5])

std 标准差

array_std=np.array([[1,2,3,4],[2,3,4,5]])array_std.std()#>>>1.224744871391589array_std.std(axis=0)#>>>array([0.5, 0.5, 0.5, 0.5])array_std.std(axis=-1)#>>>array([1.11803399, 1.11803399])

var 方差

array_var=np.array([[1,2,3],[2,3,4]])array_var.var()#>>>0.9166666666666666array_var.var(axis=0)#>>>array([0.25, 0.25, 0.25])array_var.var(axis=1)#>>>array([0.66666667, 0.66666667])

clip 边界限定 (超过边界,就按边界取值)

array_clip=np.array([[1,2,3,4],[2,3,4,5]])array_clip=np.array([[1,2,3,4],[2,3,4,5]])array_clip.clip(2,4)#>>>array([[2, 2, 3, 4],       [2, 3, 4, 4]])

round四舍五入

array_round=np.array([[1.111,2.222,3.333,4.444],[2.111,3.222,4.333,5.444]])array_round.round(decimals=1)#>>>>array([[1.1, 2.2, 3.3, 4.4],       [2.1, 3.2, 4.3, 5.4]])array_round.round(decimals=2)#>>>array([[1.11, 2.22, 3.33, 4.44],       [2.11, 3.22, 4.33, 5.44]])

numpy 排序

  1. sort 升序排序
  2. argsort 排序后的位置
  3. linspace 等差出列造数据
  4. searchsorted 插入序列,返回位置
  5. lexsort 多维度排序
import numpy as np

sort

array_sort=np.array([5,1,2,3,4,5])array_sort.sort()print(array_soprt)#>>>[1 2 3 4 5 5]

argsort

array_argsort=np.array([1,5,2,1,3,24,2,6,5])array_argsort.argsort()#>>>array([0, 3, 2, 6, 4, 1, 8, 7, 5], dtype=int64)

lispace

array_linspace=np.linspace(1,10,10)print(array_linspace)#>>>[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

searchsorted 查看值的位置

array_linspace=np.linspace(1,10,10)value=np.array([1,3,4,6])np.searchsorted(array_linspace,value)# >>>array([0, 2, 3, 5], dtype=int64)print(array_linspace)print(value)[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.][1 3 4 6]

lexsort

one=np.array([6,2,4,1,2,3,4,5,6])two=np.array([1,2,3,4,5,5,6,7,8])result=np.lexsort([two,one])resultarray([3, 1, 4, 5, 2, 6, 7, 0, 8], dtype=int64)

数组形状

  1. arange(i) 生成0到i的序列,不包括i
  2. shape 维度/形状
  3. reshape 重新设置形状
  4. newaxis 新的维度
  5. squeeze 去掉空维度
  6. transpose/T 变化形状
  7. concatenate 矩阵链接
  8. vstack 垂直合并
  9. hstack 水平合并
  10. flatten
  11. ravel

arange

array_arange=np.arange(10)print(array_arange)#>>>[0 1 2 3 4 5 6 7 8 9]

shape

array_shape=np.arange(10)array_shape.shape#>>>(10,)

reshape

array_reshape=np.arange(10)array_reshape.reshape(1,10)  #大小必须不能改变 10个元素,变化后还是10个#>>>array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

数组的形状

  1. arange(i) 生成0到i的序列,不包括i
  2. shape 维度/形状
  3. reshape 重新设置形状
  4. newaxis 新的维度
  5. squeeze 去掉空维度
  6. transpose/T 变化形状
  7. concatenate 矩阵链接
  8. vstack 垂直合并
  9. hstack 水平合并
  10. flatten
  11. ravel

arange

array_aange=np.arange(10)#>>>[0 1 2 3 4 5 6 7 8 9]

shape

array_shape=np.arange(10)array_shape.shape#>>>(10,)

reshape

array_reshape=np.arange(10)array_reshape.reshape(1,10) #大小必须不能改变 10个元素,变化后还是10个#>>>array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

newaxis

array_newaxis=np.arange(10)array_newaxis=array_newaxis[np.newaxis,:]print(array_newaxis)print(array_newaxis.shape)# >>>[[0 1 2 3 4 5 6 7 8 9]](1, 10)array_newaxis=np.arange(10)array_newaxis=array_newaxis[:,np.newaxis]print(array_newaxis)print(array_newaxis.shape)#>>>[[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]](10, 1)

squeeze

array_newaxis=np.arange(10)array_newaxis=array_newaxis[:,np.newaxis,np.newaxis]print(array_newaxis)print(array_newaxis.shape)#>>>[[[0]] [[1]] [[2]] [[3]] [[4]] [[5]] [[6]] [[7]] [[8]] [[9]]](10, 1, 1)array_squeeze=array_newaxis.squeeze()print(array_squeeze)#>>>[0 1 2 3 4 5 6 7 8 9]

transpose 形状转换

array_transpose=np.array([[1,2,3,4,5],[2,3,4,5,6]])array_transpose.transpose()#>>>array([[1, 2],       [2, 3],       [3, 4],       [4, 5],       [5, 6]])

concatenate数组链接

a=np.array([[1,2,3,4,5],[5,4,3,2,1]])b=np.array([[0,9,8,7,6],[6,7,8,9,0]])array_concatenate=np.concatenate((a,b))print(array_concatenate)#>>>[[1 2 3 4 5] [5 4 3 2 1] [0 9 8 7 6] [6 7 8 9 0]]array_concatnate_axis=np.concatenate((a,b),axis=1)print(array_concatnate_axis)#>>>[[1 2 3 4 5 0 9 8 7 6] [5 4 3 2 1 6 7 8 9 0]]array_concatnate_axis.shape#>>>(2, 10)

vstack 垂直合并

a=np.array([[1,2,3,4,5],[5,4,3,2,1]])b=np.array([[0,9,8,7,6],[6,7,8,9,0]])np.vstack((a,b))#>>>array([[1, 2, 3, 4, 5],       [5, 4, 3, 2, 1],       [0, 9, 8, 7, 6],       [6, 7, 8, 9, 0]])

hstack 水平合并

np.hstack((a,b)) 水平合并#>>>array([[1, 2, 3, 4, 5, 0, 9, 8, 7, 6],       [5, 4, 3, 2, 1, 6, 7, 8, 9, 0]])

flatten 合并成一行

array_flatten=np.array([[1,2,3,4],[4,5,6,7]])array_flatten.flatten()#>>>array([1, 2, 3, 4, 4, 5, 6, 7])

revel合并成一行

array_ravel=np.array([[1,2,3,4],[4,5,6,7]])array_ravel.ravel()#>>>array([1, 2, 3, 4, 4, 5, 6, 7])

数组的生成

  1. arange
  2. linspace
  3. logspace
  4. meshgrid
  5. r_
  6. c_
  7. zeros
  8. ones
  9. empty
  10. fill
  11. zeros_like
  12. ones_likes
  13. identity 基准矩阵

range

array_arange=np.arange(10)print(array_arange)array_arang_b=np.arange(1,10,2)print(array_arang_b)array_arange_c=np.arange(1,10,5,dtype=np.float32)#>>>[0 1 2 3 4 5 6 7 8 9][1 3 5 7 9]

linspace

array_linspace=np.linspace(1,10) ##默认等差数列个数为 50。print(array_linspace)array_linpsace_a=np.linspace(1,10,2)#>>> [1.          1.18367347  1.36734694  1.55102041  1.73469388  1.91836735  2.10204082  2.28571429  2.46938776  2.65306122  2.83673469  3.02040816  3.20408163  3.3877551   3.57142857  3.75510204  3.93877551  4.12244898  4.30612245  4.48979592  4.67346939  4.85714286  5.04081633  5.2244898  5.40816327  5.59183673  5.7755102   5.95918367  6.14285714  6.32653061  6.51020408  6.69387755  6.87755102  7.06122449  7.24489796  7.42857143  7.6122449   7.79591837  7.97959184  8.16326531  8.34693878  8.53061224  8.71428571  8.89795918  9.08163265  9.26530612  9.44897959  9.63265306  9.81632653 10.        ]

logspace

np.logspace(0,1,5)  # 10的0次幂到10的1次幂  5个等比列数据#>>>array([ 1.        ,  1.77827941,  3.16227766,  5.62341325, 10.        ])

meshgrid

x=np.linspace(-10,10,5)print(x)y=np.linspace(-20,20,5)print(y)#>>>[-10.  -5.   0.   5.  10.][-20. -10.   0.  10.  20.]x1,y1=np.meshgrid(x,y)print(x1)print(y1)#>>>[[-10.  -5.   0.   5.  10.] [-10.  -5.   0.   5.  10.] [-10.  -5.   0.   5.  10.] [-10.  -5.   0.   5.  10.] [-10.  -5.   0.   5.  10.]][[-20. -20. -20. -20. -20.] [-10. -10. -10. -10. -10.] [  0.   0.   0.   0.   0.] [ 10.  10.  10.  10.  10.] [ 20.  20.  20.  20.  20.]]

r_ row 行向量

np.r_[0:10:1]#>>>array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

c_ col 列向量

np.c_[0:10:1]#>>>array([[0],       [1],       [2],       [3],       [4],       [5],       [6],       [7],       [8],       [9]])

zeros填充0

np.zeros(5)array([0., 0., 0., 0., 0.])np.zeros((5,5))array([[0., 0., 0., 0., 0.],       [0., 0., 0., 0., 0.],       [0., 0., 0., 0., 0.],       [0., 0., 0., 0., 0.],       [0., 0., 0., 0., 0.]])

ones填充1

np.ones(5)#>>>array([1., 1., 1., 1., 1.])np.ones((5,5))array([[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.]])

empty空地址

np.empty(5)np.empty((5,5))

fill 自定义填充

a=np.empty((5,5))a.fill(3)print(a)#>>>[[3. 3. 3. 3. 3.] [3. 3. 3. 3. 3.] [3. 3. 3. 3. 3.] [3. 3. 3. 3. 3.] [3. 3. 3. 3. 3.]]

zeros_like ones_like

temp=np.arange(0,10,2)print(temp)#>>>[0 2 4 6 8]result=np.zeros_like(temp)print(result)#>>>[0 0 0 0 0]result_ones=np.ones_like(temp)print(result_ones)#>>>[1 1 1 1 1]

identity 对角矩阵

np.identity(5)#>>>array([[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.]])

转载于:https://www.cnblogs.com/panfengde/p/10078084.html

你可能感兴趣的文章
转:React Native之旅01-创建项目
查看>>
软件工程项目组Z.XML会议记录 2013/11/27
查看>>
科学计算库学习报告
查看>>
软件测试 -- 软件测试的风险主要体现在哪里
查看>>
修改App.config中的appSettings
查看>>
JQuery选择器总结
查看>>
Ubuntu中无法update的解决办法
查看>>
仿射变换
查看>>
decltype类型指示符
查看>>
虹软ArcFace人脸识别 与 Dlib 人脸识别对比
查看>>
laravel 验证码使用示例
查看>>
IE开发人员工具无法使用
查看>>
shiro 认证问题
查看>>
分页器(自定制)
查看>>
Docker系列一:Docker的介绍和安装
查看>>
java中添加定时任务
查看>>
mysql innodb研究中一直不懂的东西(不断更新)
查看>>
洛谷 P1803 凌乱的yyy Label:Water 贪心
查看>>
3.4 函数式编程
查看>>
测试——设计思维之获取反馈
查看>>