常用,常忘

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 np

array=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<float<String(取值类型顺序)
import numpy as np
array1=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('<U11') weidu=np.array([[1,2,3],[1,3,2],[4,2,1]])
print(weidu.dtype)
print(weidu.itemsize)
print(weidu.shape)
print(weidu.size)
print(weidu.ndim) #>>> nt32
#>>> 4
#>>> (3, 3)
#>>> 9
#>>> 2 weidu2=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]]
2 one=np.array([[1,2],[3,4]])
oneCopy=one.copy()
oneCopy[0,1]=100
print(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.]
float32
24

布尔数组作为索引取值


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.5
print(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 np

pan_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()
#>>>
1440 array_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()
#>>>
1 array_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()
#>>>
5 array_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()
#>>>
0 argmin.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()
#>>>
2 argmax.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.0 array_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.224744871391589 array_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.9166666666666666 array_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])
result
array([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.]])

numpy基础一的更多相关文章

  1. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  2. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  3. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  4. numpy 基础操作

    Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...

  5. Numpy 基础

    Numpy 基础 参考https://www.jianshu.com/p/83c8ef18a1e8 import numpy as np 简单创建数组 # 创建简单列表 a = [1, 2, 3, 4 ...

  6. [转]python与numpy基础

    来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...

  7. python学习笔记(三):numpy基础

    Counter函数可以对列表中数据进行统计每一个有多少种 most_common(10)可以提取前十位 from collections import Counter a = ['q','q','w' ...

  8. Numpy基础数据结构 python

    Numpy基础数据结构 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数据 1.一维数组 import numpy as np ar = np.a ...

  9. Python Numpy基础教程

    Python Numpy基础教程 本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x 什么是Numpy Numpy = Numerical + Pyth ...

  10. NumPy基础操作

    NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...

随机推荐

  1. MongoDB操作-备份和恢复

    Mongodb数据库操作-备份 恢复 导出 导入 mongodb数据备份和恢复主要分为二种:一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mon ...

  2. Comet OJ - Contest #5 简要题解

    好久没更博了,还是象征性地更一次. 依然延续了简要题解的风格. 题目链接 https://cometoj.com/contest/46 题解 A. 迫真字符串 记 \(s_i\) 表示数字 \(i\) ...

  3. BZOJ4516 SDOI2016生成魔咒(后缀自动机)

    本质不同子串数量等于所有点的len-parent树上父亲的len的和.可以直接维护. #include<iostream> #include<cstdio> #include& ...

  4. archive_lag_target参数

    需求,由于一套生产环境归档日志切换频率过低,建议修改参数,使其间隔一定时间周期自动切换生成归档日志; SQL>; THREAD# SEQUENCE# TO_CHAR(COMPLETION_TIM ...

  5. (八)mybatis之多对多

    一.需求分析 需求:查询所有用户的信息以及每个用户所属的组的信息 分析:一个用户可以有多个组,一个组也可以由多个用户. 多对多,可以设置一张中间表,该表存放的是用户表和组表的对应关系. 二.创建数据库 ...

  6. 开发环境,不用每次都ant自动编译

    公司所用ant技术,每次改个java文件,配置文件都需要重新编译一次发布 在实际搭环境的过程发现,ant就是把项目目录下的文件编译成功后的搬移到到 ,Tomcat 运行环境配置的目录下,凡是修改的文件 ...

  7. [JZOJ5279]香港记者题解--最短路图

    [JZOJ5279]香港记者题解--最短路图 题目链接 过 于 暴 力 分析 有一个naiive的想法就是从1到n跑最短路,中途建图,然后在图上按字典序最小走一遍,然而·这是不行的,你这样跳不一定能跳 ...

  8. puml 用于代码注释

    notebook 笔记本 @startuml rectangle sql_decode.py{ object SQLDataset object Name SQLDataset : meta = &q ...

  9. zlog日志函数库

    在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx).C程序员都喜欢用自己的轮子.printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件 ...

  10. 6.显示锁Lock 和 线程通信Condition

    显示锁 Lock 一.用于解决多线程 安全问题的方式: synchronized:   1.同步代码块      2.同步方法 jdk1.5 后:第三种:同步锁Lock  (注意:同步(synchro ...