numpy 是使用python进行数据分析不可或缺的第三方库,非常多的科学计算工具都是基于 numpy 进行开发的。
ndarray对象是用于存放同类型元素的多维数组,是numpy中的基本对象之一,另一个是func对象。本文主要内容是:1 、简单介绍ndarray对象;2、ndarray对象的常用属性;3、如何创建ndarray对象;4、ndarray元素访问。
它的维度以及个维度上的元素个数由shape
决定。
1 numpy.ndarray()
标题中的函数就是numpy的构造函数,我们可以使用这个函数创建一个ndarray对象。构造函数有如下几个可选参数:
参数 | 类型 | 作用 |
---|---|---|
shape | int型tuple | 多维数组的形状 |
dtype | data-type | 数组中元素的类型 |
buffer | 用于初始化数组的buffer | |
offset | int | buffer中用于初始化数组的首个数据的偏移 |
strides | int型tuple | 每个轴的下标增加1时,数据指针在内存中增加的字节数 |
order | ‘C’ 或者 ‘F’ | ‘C’:行优先;’F’:列优先 |
实例:
>>> np.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), offset=0, order="C")
array([[1, 2, 3],
[4, 5, 6]])
>>> np.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), offset=0, order="F")
array([[1, 3, 5],
[2, 4, 6]])
>>> np.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), offset=8, order="C")
array([[2, 3, 4],
[5, 6, 7]])
2 ndarray对象的常用属性
接下来介绍ndarray对象最常用的属性
属性 | 含义 |
---|---|
T | 转置,与self.transpose( )相同,如果维度小于2返回self |
size | 数组中元素个数 |
itemsize | 数组中单个元素的字节长度 |
dtype | 数组元素的数据类型对象 |
ndim | 数组的维度 |
shape | 数组的形状 |
data | 指向存放数组数据的python buffer对象 |
flat | 返回数组的一维迭代器 |
imag | 返回数组的虚部 |
real | 返回数组的实部 |
nbytes | 数组中所有元素的字节长度 |
实例:
>>> a = np.array(range(15)).reshape(3,5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.T
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
>>> a.size
15
>>> a.itemsize
8
>>> a.ndim
2
>>> a.shape
(3, 5)
>>> a.dtype
dtype('int64')
3 创建ndarray
3.1 array
使用array
函数,从常规的python列表或者元组中创建数组,元素的类型由原序列中的元素类型确定。
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
实例:
>>> np.array([1, 2, 3])
array([1, 2, 3])
>>> np.array([[1, 2],[3, 4]])
array([[1, 2],
[3, 4]])
>>> c = array( [ [1,2], [3,4] ], dtype=complex )
>>> c
array([[1.+0.j, 2.+0.j],
[3.+0.j, 4.+0.j]])
>>> a = np.array([1, 2, 3], ndmin=2)
>>> a
array([[1, 2, 3]])
>>> a.shape
(1, 3)
>>> np.array(np.mat('1 2; 3 4'))
array([[1, 2],
[3, 4]])
>>> np.array(np.mat('1 2; 3 4'), subok=True)
matrix([[1, 2],
[3, 4]])
subok
为True
,并且object是ndarray子类时(比如矩阵类型),返回的数组保留子类类型
3.2 ones与zeros系列函数
某些时候,我们在创建数组之前已经确定了数组的维度以及各维度的长度。这时我们就可以使用numpy内建的一些函数来创建ndarray。
例如:函数ones