前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jupyter notebook_numpy_1

jupyter notebook_numpy_1

作者头像
以某
发布2023-03-07 13:59:39
3420
发布2023-03-07 13:59:39
举报
文章被收录于专栏:Jack96Jack96

Numerical Python(数值化的python)

  • 1.numpy在内存运算上占有优势,核心数据类型叫做ndarray (n dimension array)
  • 2.使用数组管理内存
  • 3.numpy是一个并行计算的库(高密计算),不是直接由python进行封装的,是c语言封装的一个python库,它没有GIL锁.
  • 4.numpy是python人工智能的基础库.其它的库都依赖于numpy.

numpy中的数据类型

python中有自己的数据类型.

numpy中的数据类型相对于python来说,更加的细致

  • 1.bool:布尔 , 1 字节
  • 2.int :整数类型,代表的是int64. (bigint 8字节)
  • 3.intc: int32 (int 4个字节)
  • 4.intp:只用于索引,int64
  • 5.int8:(tinyint 1个字节)
  • 6.int16:(smallint 2字节)
  • 7.int32:(int 4个字节)
  • 8.int64:(bigint 8个字节)
  • 9.float:float64
  • 10.float16 : 半精度
  • 11.float32 : 单精度
  • 12.float64 : 双精度
  • 13.complex : complex128
  • 14.complex64:由两个32的浮点数组成的
  • 15.complex128:由两个64的浮点数组成的
  • 16.uint8 : 无符号的整数
  • 17.uint16 : 无符号的整数
  • 18.uint32 : 无符号的整数
  • 19.uint64 : 无符号的整数
  • 20.时间序列

In [2]:

代码语言:javascript
复制
#anaconda中自带numpy
代码语言:javascript
复制
#如果要自己安装的话,解决依赖关系
代码语言:javascript
复制
代码语言:javascript
复制
import numpy as np
代码语言:javascript
复制
import matplotlib.pyplot as plt

In [3]:

代码语言:javascript
复制
lj = plt.imread('onr.jpg')
代码语言:javascript
复制
#在jupyter中如果不使用输出函数,那么最后一个变量会默认调用display()
代码语言:javascript
复制
plt.imshow(lj)

Out[3]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x279508f14e0>

numpy中的名词(线代中的名称)

  • 1.一个整数 : 标量 纯量
  • 2.一维的数组 : 向量 矢量
  • 3.二维的数组 : 矩阵
  • 4.三维及其以上 : 张量

使用ndarray保存数据

数据库有瓶颈 MySQL IO操作的时候带来的

ndarray在速度上是一个整体存储的空间

In [30]:

代码语言:javascript
复制
#将其它的序列类型转变为ndarray类型
代码语言:javascript
复制
np.array('abc')

Out[30]:

代码语言:javascript
复制
array('abc', dtype='<U3')

In [25]:

代码语言:javascript
复制
np.array([1,2,3,4,5])[0]

Out[25]:

代码语言:javascript
复制
1

In [26]:

代码语言:javascript
复制
np.array((1,2,3,4,5))[0]

Out[26]:

代码语言:javascript
复制
1

In [28]:

代码语言:javascript
复制
#set类型是序列?不是
代码语言:javascript
复制
#无序的类型可以强制转换,但是不能使用
代码语言:javascript
复制
np.array({1,2,3,4,5})

Out[28]:

代码语言:javascript
复制
array({1, 2, 3, 4, 5}, dtype=object)

In [33]:

代码语言:javascript
复制
np.array({'a':1,'b':2})

Out[33]:

代码语言:javascript
复制
array({'a': 1, 'b': 2}, dtype=object)

In [34]:

代码语言:javascript
复制
#对于可迭代类型
代码语言:javascript
复制
np.array(range(10))

Out[34]:

代码语言:javascript
复制
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

引用传地址

但是引用传地址在ndarray中不能正常的使用

In [40]:

代码语言:javascript
复制
li_ = [1,2,3,4,5]

In [41]:

代码语言:javascript
复制
nd1 = np.array(li_)

In [42]:

代码语言:javascript
复制
display(li_,nd1)
代码语言:javascript
复制
[1, 2, 3, 4, 5]
代码语言:javascript
复制
array([1, 2, 3, 4, 5])

In [43]:

代码语言:javascript
复制
li_[0] = 0

In [44]:

代码语言:javascript
复制
display(li_,nd1)
代码语言:javascript
复制
[0, 2, 3, 4, 5]
代码语言:javascript
复制
array([1, 2, 3, 4, 5])

In [45]:

代码语言:javascript
复制
#拷贝传值
代码语言:javascript
复制
a=1
代码语言:javascript
复制
b=a
代码语言:javascript
复制
a=2
代码语言:javascript
复制
display(a,b)
代码语言:javascript
复制
2
代码语言:javascript
复制
1

In [46]:

代码语言:javascript
复制
#引用传地址
代码语言:javascript
复制
l1=[1,2,3]
代码语言:javascript
复制
l2=l1
代码语言:javascript
复制
l1[0] = 10
代码语言:javascript
复制
display(l1,l2)
代码语言:javascript
复制
[10, 2, 3]
代码语言:javascript
复制
[10, 2, 3]

ndarray的数据保存

In [51]:

代码语言:javascript
复制
#   name   sex   age  idCard  
代码语言:javascript
复制
#当前的数据是 4x4的矩阵 = 方阵
代码语言:javascript
复制
sign = np.array(['name','sex','age','idCard'])
代码语言:javascript
复制
arr = np.array([
代码语言:javascript
复制
    ['tom','male',18,123456],
代码语言:javascript
复制
    ['jack','male',18,123456],
代码语言:javascript
复制
    ['liye','male',18,123456],
代码语言:javascript
复制
    ['lijing','male',18,123456],
代码语言:javascript
复制
])

In [52]:

代码语言:javascript
复制
sign

Out[52]:

代码语言:javascript
复制
array(['name', 'sex', 'age', 'idCard'], dtype='<U6')

In [48]:

代码语言:javascript
复制
arr

Out[48]:

代码语言:javascript
复制
array([['tom', 'male', '18', '123456'],
       ['jack', 'male', '18', '123456'],
       ['liye', 'male', '18', '123456'],
       ['lijing', 'male', '18', '123456']], dtype='<U6')

ndarray的随机值

代码语言:javascript
复制
low   范围的最小值
代码语言:javascript
复制
high  范围的最大值
代码语言:javascript
复制
size  数组的形状
代码语言:javascript
复制
dtype 数据类型

In [85]:

代码语言:javascript
复制
#2行3列  tinyint uint8  0-255
代码语言:javascript
复制
# np.random.randint(-1000,1000,size=(2,3),dtype='uint8').itemsize
代码语言:javascript
复制
np.random.randint(-1000,1000,size=(2,3),dtype=int).itemsize

Out[85]:

代码语言:javascript
复制
8
代码语言:javascript
复制
#随机小数
代码语言:javascript
复制
#size 形状

In [90]:

代码语言:javascript
复制
np.random.random((5,5))

Out[90]:

代码语言:javascript
复制
array([[0.9710657 , 0.59959458, 0.17277926, 0.7564499 , 0.8199467 ],
       [0.05728386, 0.43645809, 0.55643072, 0.24820215, 0.64320721],
       [0.83246593, 0.46085084, 0.59217745, 0.64244586, 0.46066542],
       [0.73132308, 0.17251823, 0.92862237, 0.13484279, 0.94449531],
       [0.38324227, 0.21124364, 0.10590877, 0.85026129, 0.63822026]])
代码语言:javascript
复制
#randn  是生成一个 标准的正态分布的数组 , 中间值是0  均值是0   标准差值为1
代码语言:javascript
复制
代码语言:javascript
复制
#什么是正态分布?高斯分布
代码语言:javascript
复制
代码语言:javascript
复制
d0, d1, ..., dn  代表的是多少维度

In [95]:

代码语言:javascript
复制
np.random.randn(5,3)

Out[95]:

代码语言:javascript
复制
array([[-0.62357575,  1.15439985, -1.65257655],
       [ 1.97774917, -0.05774362, -0.77469661],
       [-1.65905117, -1.24069957,  0.87832254],
       [ 0.07512725,  0.00605548,  0.02697345],
       [ 0.22584547,  1.48109243, -1.10517901]])
代码语言:javascript
复制
#rand 只是用来生成一个随机的浮点数的

In [100]:

代码语言:javascript
复制
np.random.rand(5,3)

Out[100]:

代码语言:javascript
复制
array([[0.32596556, 0.16245572, 0.39403561],
       [0.11270325, 0.83104786, 0.77568375],
       [0.58643552, 0.26710588, 0.4707389 ],
       [0.43680775, 0.37349157, 0.41696032],
       [0.39967651, 0.69804483, 0.82111621]])
代码语言:javascript
复制
#normal 生成一个自定义正太分布的数组
代码语言:javascript
复制
loc=0.0    location 定位   中值
代码语言:javascript
复制
scale=1.0  波动 
代码语言:javascript
复制
size=None  数组的形状
代码语言:javascript
复制
代码语言:javascript
复制
超过波动范围的值是异常值

In [101]:

代码语言:javascript
复制
np.random.normal(100,10,10)

Out[101]:

代码语言:javascript
复制
array([ 97.1131475 , 107.82816673,  99.37605262, 104.48124786,
       110.60289338,  95.01571761, 100.66840617, 103.5317543 ,
        85.9189614 ,  92.54307587])

ndarray的属性

  • ndarray.shape 数组的形状
  • ndarray.ndim 数组的维度
  • ndarray.size 数组中元素的数量
  • ndarray.dtype 数组的数据类型
  • ndarray.itemsize 一个数组占用的字节数
  • ndarray.T 转制矩阵
  • ndarray.real 读取实数部分
  • ndarray.imag 读取虚数部分
  • ndarray.nbytes 用来计算数组的元素占用字节的总和
  • ndarray.strides 逐步输出数组占用的字节数

In [102]:

代码语言:javascript
复制
A = np.array([[1,2,3],[7,8,9]])
代码语言:javascript
复制
A

Out[102]:

代码语言:javascript
复制
array([[1, 2, 3],
       [7, 8, 9]])

In [103]:

代码语言:javascript
复制
A.T

Out[103]:

代码语言:javascript
复制
array([[1, 7],
       [2, 8],
       [3, 9]])

In [107]:

代码语言:javascript
复制
np.dot(A.T,A)

Out[107]:

代码语言:javascript
复制
array([[50, 58, 66],
       [58, 68, 78],
       [66, 78, 90]])
代码语言:javascript
复制
# real imag

In [110]:

代码语言:javascript
复制
res = np.full(shape=(2,3),fill_value=0.123+0.345j)

In [114]:

代码语言:javascript
复制
res.real

Out[114]:

代码语言:javascript
复制
array([[0.123, 0.123, 0.123],
       [0.123, 0.123, 0.123]])

In [116]:

代码语言:javascript
复制
res.imag

Out[116]:

代码语言:javascript
复制
array([[0.345, 0.345, 0.345],
       [0.345, 0.345, 0.345]])
代码语言:javascript
复制
#nbytes

In [126]:

代码语言:javascript
复制
o = np.ones(shape=(3,5),dtype=np.int8)

In [127]:

代码语言:javascript
复制
o

Out[127]:

代码语言:javascript
复制
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]], dtype=int8)

In [128]:

代码语言:javascript
复制
o.shape

Out[128]:

代码语言:javascript
复制
(3, 5)

In [129]:

代码语言:javascript
复制
o.nbytes

Out[129]:

代码语言:javascript
复制
15

In [130]:

代码语言:javascript
复制
o.dtype

Out[130]:

代码语言:javascript
复制
dtype('int8')

In [133]:

代码语言:javascript
复制
#对原数据不产生影响
代码语言:javascript
复制
o = o.astype(np.float)
代码语言:javascript
复制
#strides

In [139]:

代码语言:javascript
复制
代码语言:javascript
复制
z = np.zeros(shape=(4,3))
代码语言:javascript
复制
z

Out[139]:

代码语言:javascript
复制
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

In [140]:

代码语言:javascript
复制
z.itemsize

Out[140]:

代码语言:javascript
复制
8

In [141]:

代码语言:javascript
复制
z.nbytes

Out[141]:

代码语言:javascript
复制
96

In [142]:

代码语言:javascript
复制
#8指的是每一个元素所占用的字节数
代码语言:javascript
复制
#32 指的是行向量所占用的字节数
代码语言:javascript
复制
z.strides

Out[142]:

代码语言:javascript
复制
(24, 8)

np中的函数

  • np.dot() 矩阵乘法
  • np.full() 使用某一个制定的值填满数组
  • np.ones() 生成一个元素全部为1的数组
  • np.astype() 改变数组的数据类型
  • np.zeros() 生成一个元素全部为0的数组,如果生成的维度是二维的,那么这是一个'零矩阵'(相当于代数中0)
  • np.diag() 对角矩阵,主对角线上是有值,其它地方没有值
  • np.eye() I 单位矩阵,(相当于线代中的 1),主对角线上的值为1,其它的地方为0

In [161]:

代码语言:javascript
复制
#N 是 阶
代码语言:javascript
复制
#k = 2 代表对角线向上偏移两格位置
代码语言:javascript
复制
#k = -1 代表对角线向下偏移一格位置
代码语言:javascript
复制
I = np.eye(3)
代码语言:javascript
复制
I

Out[161]:

代码语言:javascript
复制
array([[0., 0., 0.],
       [0., 0., 0.],
       [1., 0., 0.]])

In [146]:

代码语言:javascript
复制
A = np.random.randint(1,10,(3,3))
代码语言:javascript
复制
A

Out[146]:

代码语言:javascript
复制
array([[4, 9, 7],
       [4, 6, 5],
       [9, 6, 5]])

In [148]:

代码语言:javascript
复制
np.dot(I,A)

Out[148]:

代码语言:javascript
复制
array([[4., 9., 7.],
       [4., 6., 5.],
       [9., 6., 5.]])

In [156]:

代码语言:javascript
复制
#v 代表对角线上的值,这个值必须是一个向量
代码语言:javascript
复制
np.diag([1,0.5,0.3])

Out[156]:

代码语言:javascript
复制
array([[1. , 0. , 0. ],
       [0. , 0.5, 0. ],
       [0. , 0. , 0.3]])
代码语言:javascript
复制
三角矩阵  上三角  下三角

In [168]:

代码语言:javascript
复制
a = np.eye(3,k=-2)
代码语言:javascript
复制
a

Out[168]:

代码语言:javascript
复制
array([[0., 0., 0.],
       [0., 0., 0.],
       [1., 0., 0.]])

In [167]:

代码语言:javascript
复制
b = np.eye(3,k=-1)
代码语言:javascript
复制
b

Out[167]:

代码语言:javascript
复制
array([[0., 0., 0.],
       [1., 0., 0.],
       [0., 1., 0.]])

In [166]:

代码语言:javascript
复制
c = np.eye(3)
代码语言:javascript
复制
c

Out[166]:

代码语言:javascript
复制
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

In [169]:

代码语言:javascript
复制
a+b+c

Out[169]:

代码语言:javascript
复制
array([[1., 0., 0.],
       [1., 1., 0.],
       [1., 1., 1.]])
代码语言:javascript
复制
稀疏矩阵   希松  松散
代码语言:javascript
复制
代码语言:javascript
复制
大部分的值是0,小部分的位置有其它值的
代码语言:javascript
复制
代码语言:javascript
复制
文本处理

In [171]:

代码语言:javascript
复制
np.array([[0,0,0,1],[0,0,0,0],[0,2,0,0],[0,0,0,0]])

Out[171]:

代码语言:javascript
复制
array([[0, 0, 0, 1],
       [0, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 0, 0]])

numpy 中的聚合函数

  • np.sum() 求和
  • np.mean() 均值
  • np.max() 最大值
  • np.min() 最小值
代码语言:javascript
复制
axis参数  轴
代码语言:javascript
复制
axis = 0  行合并   y
代码语言:javascript
复制
axis = 1  列合并   x

In [177]:

代码语言:javascript
复制
np.ones(shape=(4,5)).sum(axis=1)

Out[177]:

代码语言:javascript
复制
array([5., 5., 5., 5.])

In [182]:

代码语言:javascript
复制
A = np.random.randint(1,10,(4,5))
代码语言:javascript
复制
A

Out[182]:

代码语言:javascript
复制
array([[6, 4, 4, 8, 3],
       [9, 1, 7, 6, 8],
       [8, 6, 9, 9, 2],
       [4, 2, 3, 2, 6]])

In [185]:

代码语言:javascript
复制
np.mean(A,axis=-1)  

Out[185]:

代码语言:javascript
复制
array([5. , 6.2, 6.8, 3.4])

使用聚合函数进行图片的灰度化

In [196]:

代码语言:javascript
复制
#3 rgb
代码语言:javascript
复制
lj.shape

Out[196]:

代码语言:javascript
复制
(483, 483, 3)

In [4]:

代码语言:javascript
复制
#黑白图片  还是二维的  透光率  jpg 0-255   png  0-1
代码语言:javascript
复制
#需要降低维度
代码语言:javascript
复制
#np.sum()  ndarray.sum()
代码语言:javascript
复制
代码语言:javascript
复制
#color  map
代码语言:javascript
复制
#bug jpg  0-255  [243,200,220]
代码语言:javascript
复制
plt.imshow(lj.sum(axis=2),cmap='gray')

Out[4]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x27950987588>

In [5]:

代码语言:javascript
复制
plt.imshow(lj.max(axis=-1),cmap='gray')

Out[5]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x279509e4400>

In [6]:

代码语言:javascript
复制
plt.imshow(lj.min(axis=-1),cmap='gray')

Out[6]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x27950a403c8>

In [7]:

代码语言:javascript
复制
plt.imshow(lj.mean(axis=-1),cmap='gray')

Out[7]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x27950bcef60>

In [8]:

代码语言:javascript
复制
plt.imshow(lj)

Out[8]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x27950aa7940>

In [12]:

代码语言:javascript
复制
plt.imshow(lj[0:300,60:280])

Out[12]:

代码语言:javascript
复制
<matplotlib.image.AxesImage at 0x27951d5ab70>

In [ ]:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Numerical Python(数值化的python)
    • numpy中的数据类型¶
      • numpy中的名词(线代中的名称)
      • 使用ndarray保存数据
      • 引用传地址
      • ndarray的数据保存
      • ndarray的随机值
      • ndarray的属性
      • np中的函数
      • numpy 中的聚合函数
      • 使用聚合函数进行图片的灰度化
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档