NumPy是使用Python进行科学计算的基本软件包。它包含以下内容:
-
强大的N维数组对象
-
复杂的(广播)功能
-
集成C / C ++和Fortran代码的工具
-
有用的线性代数,傅立叶变换和随机数功能
除了其明显的科学用途外,NumPy还可以用作通用数据的高效多维容器。可以定义任意数据类型。这使NumPy能够无缝,快速地与各种数据库集成。
NumPy是Python中科学计算的基本软件包。它是一个Python库,提供多维数组对象,各种派生对象(例如蒙版数组和矩阵)以及各种例程,用于对数组进行快速操作,包括数学,逻辑,形状处理,排序,选择,I / O ,离散傅立叶变换,基本线性代数,基本统计运算,随机模拟等等。
NumPy包的核心是ndarray对象。这封装了均匀数据类型的n维数组,为了提高性能,许多操作都在编译后的代码中执行。NumPy数组和标准Python序列之间有几个重要区别:
-
NumPy数组在创建时具有固定的大小,这与Python列表(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原始数组。
-
NumPy数组中的所有元素都必须具有相同的数据类型,因此在内存中的大小将相同。例外:一个对象可以具有(Python,包括NumPy)对象的数组,从而允许数组具有不同大小的元素。
-
NumPy数组有助于对大量数据进行高级数学运算和其他类型的运算。通常,与使用Python的内置序列相比,此类操作可以更高效地执行,并且代码更少。
-
越来越多的基于Python的科学和数学软件包都使用NumPy数组。尽管这些通常支持Python序列输入,但它们会在处理之前将此类输入转换为NumPy数组,并且通常会输出NumPy数组。换句话说,为了有效地使用很多(也许甚至是大多数)当今基于科学/数学的Python的软件,仅仅知道如何使用Python的内置序列类型是不够的-人们还需要知道如何使用NumPy数组。
Numpy创建图形以及open_cv知识点补充
import numpy as np import cv2 as cv def access_pixels(image): print(image.shape) #获取图片的详细信息(height,width,channels) height = image.shape[0] #索引为0表示height width = image.shape[1] #索引为1表示width channels = image.shape[2] #索引为2表示channels print("height : %s , width : %s , channels : %s" %(height,width,channels)) for h in range(height): #获取height 像素 for w in range(width): for c in range(channels): pv = image[h,w,c] #获取图像的二维数组 image[h,w,c] = 255-pv #修改图像的二维数组 cv.imshow("edit_image",image) #显示修改后的图像 def create_image(): """ img = np.zeros([400,400,3] , np.uint8 ) #设置图片的格式 height,width, channels img[:,:,0] = np.ones([400,400],) * 255 img[:, :,1] = np.ones([400, 400], ) * 255 img[:, :,2] = np.ones([400, 400], ) * 255 cv.imshow("create_image",img) """ #单通道 灰度图像 # img = np.zeros([400,400,1],np.uint8) img= np.ones([400,400,1],np.uint8) * 127 cv.imshow("dtd_img",img)
def inverse(img):
dst = cv.bitwise_not(img) #照片反选相比access_pixels速度快
cv.imshow("kui",dst)
src = cv.imread("./01.jpg") #rgb cv.imshow("numpy_date",src) t1 = cv.getTickCount() # access_pixels(src) create_image() t2 = cv.getTickCount() time = (t2-t1)/cv.getTickFrequency() print("Time : %s ms" %(time*1000)) cv.waitKey(0) cv.destroyAllWindows()
调用access_pixels()
def inverse(img):
dst = cv.bitwise_not(img) #照片反选相比access_pixels速度快
cv.imshow("kui",dst)