- ·上一篇内容:NumPy的安装
- ·下一篇内容:已经没有了
NumPy中的ndarray对象
NumPy模块提供的最重要的对象是ndarray(N-dimensional array,N维数组)。
NumPy ndarray是一系列具有相同数据类型数据元素的集合。
每个数据元素占有的内存区域大小相同,并由称为dtype数据类型的对象表示。
NumPy ndarray数组的索引从0开始。
从ndarray对象中提取的任何数据项(通过切片获取到的)都由数组标量类型之一的Python对象表示。
ndarray、dtype和数组标量类型之间的关系如下图所示:
NumPy ndarray的维数和数据元素数量由其shape属性进行定义,该属性是包含N个非负整数的元组对象,每个非负整数代表NumPy ndarray数组每维的数据元素数量
不同的ndarray可以共享相同的数据,因此在一个ndarray中所做的修改可能在另一个ndarray中可见。
ndarray数组的创建
使用NumPy中的array函数可以创建一个ndarray数组。其基本语法形式如下:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
各参数的含义如下表所示:
参数名称 | 参数含义 |
---|---|
object | 序列对象或嵌套的序列对象,用于生成数组中元素 |
dtype | 可选参数,默认为None,表示数组元素的数据类型 |
copy | 可选参数,默认为True,数组数据元素被复制(仅在通过复制方式创建新数组时起作用)。 |
order |
可选参数, 在object参数为非数组时,指定数组数据元素的内存布局。取值有4种:
|
subok | 可选参数,布尔类型,默认值为False,表示强制返回一个基类类型的数组,如果取值为True,则传递子类。 |
ndmin | 可选参数,是一个整型数字,指定生成数组的最小维度 |
为了更好的理解该函数,下面举一些例子用于说明相关参数的作用。
一维数组的创建
下面是一个使用array函数创建一维数组的例子。
import numpy as np arr1 = np.array([1, 2, 3]) print(arr1)
输出结果如下:
[1 2 3]
在上面的程序代码中,import numpy as np用于导入NumPy库,并定义一个名为np的别名。这种导入NumPy库的写法在使用中是常见的。这种写法避免了与Python或其他库中的同名标识符产生冲突。
多维数组的创建
下面是一个创建二维数组的例子:
import numpy as np arr2 = np.array([[1, 2], [3, 4]]) print(arr2)
输出结果如下
[[1 2]
[3 4]]
下面是一个创建三维数组的例子:
import numpy as np arr3 = np.array([[[1, 2], [3, 4]],[[5, 6], [7, 8]]]) print(arr3)
输出结果如下
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
创建数组时指定dtype参数
下面是在定义数组时指定dtype参数的例子:
import numpy as np arr4 = np.array([1, 2, 3, 4], dtype=np.int8) arr5 = np.array([1, 2, 3, 4], dtype=complex) print(arr4) print(arr5)
输出结果为:
[1 2 3 4]
[1.+0.j 2.+0.j 3.+0.j 4.+0.j]
在上面的例子中,在定义arr4时,指定数组数据元素的数据类型为8位的整型数,其取值范围为:-128~127,如果数组的数据元素值超过这个范围,程序会抛出OverflowError错误。
指定order参数
import numpy as np arr6 = np.array([[1, 2], [3, 4]], order='C') arr7 = np.array([[1, 2], [3, 4]], order='F') print(arr6) print(arr7)
输出结果如下:
[[1 2]
[3 4]]
[[1 2]
[3 4]]
从上面的输出结果可以看出,两者并没有区别。但是其在内存中存储时是有区别的:在指定order参数值为'C'时,其表示为C语言风格的存储顺序,即行优先的顺序,在上面的例子中,行优先顺序的内存存储布局为:1,2,3,4。
在指定order参数值为'F'时,其表示为Fortran风格的存储顺序,即列优先的顺序。在上面的例子中,列优先顺序的内存存储布局为:1,3,2,4。
指定ndmin参数
下面是在定义数组时指定ndmin的例子:
import numpy as np arr8 = np.array([1, 2, 3, 4, 5, 6], ndmin=2) arr9 = np.array([1, 2, 3, 4, 5, 6], ndmin=3) print(arr8) print(arr9)
输出结果如下:
[[1 2 3 4 5 6]]
[[[1 2 3 4 5 6]]]
从上面的输出结果可以看出,对于同样的数据序列,因为指定ndmin参数值不同,其生成的数组维度是不同的。
微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。
个人成长离不开各位的关注,你的关注就是我继续前行的动力。