Numpy数组
NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(通常是元素是数字)。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。
NumPy的数组类被称作 ndarray。
ndarray对象属性
-
ndarray.ndim
数组轴的个数,在python的世界中,轴的个数被称作秩。
-
ndarray.shape
数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性。
-
ndarray.size
数组元素的总个数,等于shape属性中元组元素的乘积。
-
ndarray.dtype
一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。
-
ndarray.itemsize
数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).
-
ndarray.data
包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。
from numpy import *a = arange(15).reshape(3, 5)# arange(n) 返回长度为n的数组(array对象)# reshape() 数组新的shape属性应该要与原来的配套。# 如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。print("数组的值:\n {}".format(a))print("数组维度: {}".format(a.shape))print("数组的秩: {}".format(a.ndim))print("数组中元素类型: {}".format(a.dtype))print("数组中元素大小(字节为单位): {}".format(a.itemsize))print("数组中元素个数: {}".format(a.size))
"D:\Python 3.6.2\python.exe" E:/PyPro/DM/np.py数组的值: [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]数组维度: (3, 5)数组的秩: 2数组中元素类型: int32数组中元素大小(字节为单位): 4数组中元素个数: 15Process finished with exit code 0
数组的创建
array函数
from numpy import *# array()创建a = array([ 1, 2, 3, 4])print(a)# 序列转化多维数组b = array([ (1, 2, 3, 4), (5, 4, 3, 2)])print(b)# 创建时指定数组类型c = array([ [1, 2], [2, 3], [0.2, 4]], dtype=complex)print(c)print("c的元素类型为: {}".format(c.dtype))
"D:\Python 3.6.2\python.exe" E:/PyPro/DM/np.py[1 2 3 4][[1 2 3 4] [5 4 3 2]][[ 1.0+0.j 2.0+0.j] [ 2.0+0.j 3.0+0.j] [ 0.2+0.j 4.0+0.j]]c的元素类型为: complex128
函数创建数组
函数 zeros 创建一个全是0的数组;
函数 ones 创建一个全1的数组;
函数 empty 创建一个内容随机并且依赖与内存状态的数组;
默认创建的数组类型(dtype)都是float64。
from numpy import *'''函数 zeros 创建一个全是0的数组;函数 ones 创建一个全1的数组;函数 empty 创建一个内容随机并且依赖与内存状态的数组;默认创建的数组类型(dtype)都是float64。'''a = zeros((3, 4))print(a)b = ones((2, 8))print(b)c = empty((3, 2))
"D:\Python 3.6.2\python.exe" E:/PyPro/DM/np.py[[ 0. 0. 0. 0.] [ 0. 0. 0. 0.] [ 0. 0. 0. 0.]][[ 1. 1. 1. 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1. 1. 1. 1.]]
NumPy提供一个类似arange的函数返回数组而不是列表。arange(m, n, k)表示创建m-n(包含m但不办函n)中步长为k的数组。
当 arange 使用浮点数参数时,由于有限的浮点数精度,通常无法预测获得的元素个数。 因此,最好使用函数 linspace 去接收我们想要的元素个数来代替用range来指定步长。
from numpy import *a = arange(10, 20, 5)print(type(a))print(a)'''当 arange 使用浮点数参数时,由于有限的浮点数精度,通常无法预测获得的元素个数。因此,最好使用函数 linspace 去接收我们想要的元素个数来代替用range来指定步长。'''b = arange(0, 2, 0.3)print(b)
"D:\Python 3.6.2\python.exe" E:/PyPro/DM/np.py[10 15][ 0. 0.3 0.6 0.9 1.2 1.5 1.8]
其它函数array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, rand, randn, fromfunction, fromfile参考:
数组打印
打印一个数组,NumPy以类似嵌套列表的形式显示它,但是呈以下布局: 最后的轴从左到右打印 次后的轴从顶向下打印 剩下的轴从顶向下打印,每个切片通过一个空行与下一个隔开。
from numpy import *'''打印一个数组,NumPy以类似嵌套列表的形式显示它,但是呈以下布局:最后的轴从左到右打印次后的轴从顶向下打印剩下的轴从顶向下打印,每个切片通过一个空行与下一个隔开'''a = arange(24).reshape(2, 3, 4)print(a)'''如果一个数组用来打印太大了,NumPy自动省略中间部分而只打印角落禁用NumPy的这种行为并强制打印整个数组,你可以设置printoptions参数来更改打印选项set_printoptions(threshold='nan')'''b = arange(5000)print(b)
"D:\Python 3.6.2\python.exe" E:/PyPro/DM/np.py[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]][ 0 1 2 ..., 4997 4998 4999]