numpy.array() 数组对象,可以表示普通的一维数组,或者二维矩阵,或者任意数据;并且它可以对数组中的数据进行非常高效的运算,如:数据统计、图像处理、线性代数等
numpy 之所以能运行这么快的原因是因为它底层是用C语言实现的目标代码,但对于需要运算的数据需要先将它们表示成numpy数组的形式,即向量化
首先导入库并去别名np:
import numpy as np
np.array([1,2,3,4,5])
np.zeros((3,2))
np.ones((2,4))
np.arange(3,7) #递增
np.arange(9,1,-1) #递减
np.linspace(0,1,5)
#介于0-1之间等间距的5位数
np.random.rand(2,4)
a = np.zeros((3,2))
a.shape
默认数组类型为64位的浮点型(np.float64)
a = np.zeros((4,2), dtype=np.int32)
a = np.zeros((2,4))
b = a.astype(int)
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a+b)
print(a/b)
同位置的数相乘再相加
a = np.array([1,2,3])
b = np.array([4,5,6])
np.dot(a,b)
等同于np.matmul()函数
a = np.array([[1,2],
[3,4]])
b = np.array([[2,0],
[0,2]])
print(a @ b)
a = np.array([1,2,3])
np.sqrt(a)
a = np.array([1,2,3])
np.sin(a)
np.cos(a)
a = np.array([1,2,3])
np.log(a)
np.power(a,2)
分别计算各个元素与这个数的加减乘除,产生一个同尺寸的新数组,即称为“广播”
a = np.array([1,2,3])
a*5
运算前,numpy 会将两个数组扩展至相同尺寸,然后再将相同位置的元素相加
a = np.array([1,2,3,4,5])
a.min()
a.max()
a = np.array([1,2,3,4,5])
a.argmin()
a.argmax()
a = np.array([1,2,3,4,5])
a.sum()
a = np.array([1,2,3,4,5])
a.mean()
np.median()
a = np.array([1,2,3,4,5])
a.var()
a.std()
可以指定一个额外的参数axis
当axis=0时,它会将每一行中对应的数据相加,axis=0代表第一个维度,即为 行
a = np.array([[1,2,3,4,5],
[5,6,7,8,9]])
a.sum(axis=0)
当axis=1时,代表第二个维度, 即为 列
a = np.array([[1,2,3,4,5],
[5,6,7,8,9]])
a.sum(axis=1)
a = np.array([[1,2,3],
[4,5,6]])
a[0,1]
a = np.arange(10)
a[a<3] #返回a<3的元素
a[(a>3)&(a%2==0)] #返回a>3且是偶数的数
a = np.array([[1,2,3],
[4,5,6]])
a[0,0:2]
a = np.array([[1,2,3],
[4,5,6]])
a[0, : ] 或 a[0]
a = np.array([1,2,3,4,5,6,7,8,9])
a[0:9:n] #n可正可负
a[::-1] #将数组翻转
pillow安装
pip install pillow
from PIL import Image
im = Image.open('C:/Users/Lenovo/Desktop/02.jpg')
im.show()
from PIL import Image
import numpy as np
im = Image.open('C:/Users/Lenovo/Desktop/02.jpg')
im = np.array(im)
print(im.shape)
---》(1000, 750, 3) 表示1000行,750列,有3个颜色分量
im[100,100]
im_r = im[:,:,0]
Image.fromarray(im_r).show()
from PIL import Image
import numpy as np
im1 = np.array(Image.open('C:/Users/Lenovo/Desktop/02.jpg'))
im2 = np.array(Image.open('C:/Users/Lenovo/Desktop/01.jpg'))
im_blend = im1*0.4+im2*0.6
im_blend = im_blend.astype(np.uint8) #运算结果为浮点数
Image.fromarray(im_blend).show() #显示图片,将图片转换成整型数
im_downsample = im1[::10,::10,:]
im_downsample = im1[::10,::10,:]
print(im_downsample)
im_flipped = im1[::-1,:,:] #上下翻转
im_flipped = im1[:,::-1,:] #左右翻转
Image.fromarray(im_flipped).show()
im_cropped = im[40:540,400:900,:]
Image.fromarray(im_cropped).show()
手机扫一扫
移动阅读更方便
你可能感兴趣的文章