OpenCV-Numpy中的ndarray

OpenCV笔记

Numpy中的ndarray

OpenCV的Python API是基于Numpy的,它是Python的一种开源的数值计算扩展,用来存储和处理多维数组,其核心数据结构是ndarray。

ndarray对象

1.构造二维的ndarray
首先了解如何构造二位的ndarry。构造一个二维数组(矩阵),需要知道的最基本信息是他的行数(高)和列数(宽)及其数据类型,如uint8、int32、float32、float64等。以构造一个2行3列全是0的float类型的二维数组为列,代码如下:

import numpy as np
result=np.zeros((2,3),np.float)
print type(result)
# 
print result
# [[0. 0. 0.]
#  [0. 0. 0.]]
print result[0]
# [0. 0. 0.]
print result[1]
# [0. 0. 0.]
print type(result[0])
# 

构造一个2行3列全是1的整形矩阵,结果如下:

import numpy as np
result=np.ones((2,3),np.int)
print type(result)
print result
# [[1 1 1]
#  [1 1 1]]
print result[0]
# [1 1 1]
print result[1]
# [1 1 1]

初始化一个整型矩阵:

import numpy as np
result=np.array([[1,2,3,4],[5,6,7,8]],dtype=int)
print type(result)
#
print result
# [[1 2 3 4][5 6 7 8]]
print result[0]
# [1 2 3 4]
print result[1]
# [5 6 7 8]

1.构造二维的ndarray
三维数组可以理解成每一个元素都是一个二维数组,以初始化一个222的整型数组为列,即可以把这个三维数组理解为两个2*2的二维数组,如下:

import numpy as np

result = np.array([[[1,2],[3,4]],[[11,12],[13,14]]],np.int)
print result
# [[[ 1  2]
#   [ 3  4]]
#
#  [[11 12]
#   [13 14]]]
print result[0]
# [[1 2]
#  [3 4]]
print result[1]
# [[11 12]
#  [13 14]]

了解了ndarry的构造方法后,学习ndarry的成员变量和成员函数,以便获取它的基本信息和数值。
3.ndarry的成员变量
利用shape可以获得result的行数和列数,如下:

import numpy as np
result=np.array([[1,2,3,4],[5,6,7,8]],dtype=int)
print result.shape
# (2L, 4L)

利用dtype可以获得result的成员变量,如下:

import numpy as np
result=np.array([[1,2,3,4],[5,6,7,8]],dtype=int)
print result.dtype
# int32

3.访问二维ndarry中的值,以以下二维数组为例:
result =np.array([[1,2,3],[4,5,6]],np.int)
1.获取第2行第3列的值如

import numpy as np
result =np.array([[1,2,3],[4,5,6]],np.int)
print result[1,2]
#6
#同等于以下写法
print result[1][2]
#6

2.获取第1行全部值

import numpy as np
result =np.array([[1,2,3],[4,5,6]],np.int)
print result[0,:]
print result[0,::]
print result[0][::]
print result[0][:]
# [1 2 3]
# [1 2 3]
# [1 2 3]
# [1 2 3]

3.获取第2列所有值

import numpy as np
result =np.array([[1,2,3],[4,5,6]],np.int)
print result[:,1]
print result[::,1]
# [2 5]
# [2 5]

4.访问三维ndarry中的值,以以下三维数组为例:

result =np.array([[[1,1,1],[2,2,2],[3,3,3]],[[10,10,10],[20,20,20],[30,30,30]]],np.int)

1.获取三维数组中所有二维数组的第2列的值,如下:

import numpy as np
result =np.array([[[1,2,3],[4,5,6],[7,8,9]],[[11,12,13],[24,25,26],[37,38,39]]],np.int)
print result[:,:,1]
# [[ 2  5  8]
#  [12 25 38]]

2.获取三维数组中第一个二维数组的全部的值

import numpy as np
result =np.array([[[1,2,3],[4,5,6],[7,8,9]],[[11,12,13],[24,25,26],[37,38,39]]],np.int)
print result[0,:,:]
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

你可能感兴趣的:(OpenCv,OpenCv,Pyhton,Numpy)