numpy模块


NumPy is the fundamental package for scientific computing in Python.

ndarray

属性 说明
.ndim 秩,即轴的数量或维度的数量
.shape n行m列
.size n*m个数
.dtype 元素类型
.itemsize 元素大小,单位:字节

ndarray数组可以由非同质对象构成。
非同质ndarray元素为对象类型,dtype('O')

(1)创建方法

  1. np.array(list/tuple,dtype=np.float32)
  2. np.arange(n)
  3. np.ones(shape)
  4. np.zeros(shape)
  5. np.full(shape,val)
  6. np.eye(n)
  7. np.ones_like(a)
  8. np.zeros_like(a)
  9. np.full_like(a,val)
  10. np.linspace(n,m,k,endpoint=True)
  11. np.concatenate()

(2)变换方法

  1. a.reshape(shape),对areshape,返回shape形状数组
  2. a.resize(shape),同reshape,但修改原数组
  3. a.swapaxes(ax1,ax2),调换维度
  4. a.flatten(),降维,不改变a
  5. new_a=a.astype(new_type)
  6. a.tolist()

(3)操作方法

  1. 索引切片同1维,多维间用 ,
  2. : 可选取整个维度

(4)运算方法

  1. a.mean()
  2. 元素群运算:+ - * / **
    np.maxmum(x,y)
    np.minimum(x,y)
    算术比较,返回bool值
  3. np.abs()np.fabs()
  4. np.sqrt()np.square()
  5. np.log()np.log2()
  6. np.ceil()np.floor()
  7. np.rint(),四舍五入
  8. np.sin()···
  9. np.exp(),计算指数
  10. np.sign(),返回1,0,-1

实践

import numpy as np
np.arange(5)            #-->array([0, 1, 2, 3, 4])
np.ones([2,2])          #-->array([[1., 1.],1., 1.]])
np.linspace(1,10,4)     #-->array([ 1.,  4.,  7., 10.])

其它

(1)random函数

  1. np.random.uniform(low,high,size)
    产生均匀分布数组
  2. np.random.normal(loc,scale,size)
    产生正态分布数组,loc均值,scale标准差
  3. np.random.poisson(lam,size)
    产生泊松分布数组,lam随机事件发生概率

(2)统计函数

  1. .sum(a,axis=None)
  2. .mean(a,axis=None),计算期望
  3. .average(a,axis=None,weights=None),计算加权平均
  4. .std(a,axis=None),计算标准差
  5. .var(a,axis=None),计算方差

(3)梯度函数

  1. np.gradient(f),计算斜率

(4)文件读写

一维或二维

  1. np.savetxt(frame,array,fmt,delimiter=None)
    其中delimiter应该为 ,
    eg. np.savetxt('foo.csv',a,fmt='%d',delimiter=',')
  2. np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)

多维

  1. a.tofile()
  2. np.fromfile
  3. np.save(),npy文件
  4. np.load()

额外

#转置矩阵

#做法一:
import numpy as np
class Solution:
    def transpose(self, m: List[List[int]]) -> List[List[int]]:
        return np.matrix(m).T.tolist()

#做法二:
class Solution:
    def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
        return list(zip(*matrix))

小结

本文基于官方文档,和mooc一门课的笔记。
还很杂乱,需要重学时再整理。

# 这是课程代码的copy:
# (对图片进行手绘风格转变)

from PIL import Image
import numpy as np

a = np.asarray(Image.open('./beijing.jpg').convert('L')).astype('float')

depth = 10.                      # (0-100)
grad = np.gradient(a)             #取图像灰度的梯度值
grad_x, grad_y = grad               #分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A

vec_el = np.pi/2.2                   # 光源的俯视角度,弧度值
vec_az = np.pi/4.                    # 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az)   #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az)   #光源对y 轴的影响
dz = np.sin(vec_el)              #光源对z 轴的影响

b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)     #光源归一化
b = b.clip(0,255)

im = Image.fromarray(b.astype('uint8'))  #重构图像
im.save('./beijingHD.jpg')

文章作者: ╯晓~
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ╯晓~ !
评论
  目录