ndarray对象简介
NumPy 定义了一个 n 维数组对象,简称 ndarray 对象,它是一个一系列<u>相同类型元素</u>组成的数组集合,以 0 下标为开始进行集合中元素的索引。数组中的<u>每个元素都占有大小相同的内存块</u>,可以使用索引或切片的方式获取数组中的每个元素
ndarray 对象采用了数组的索引机制,将数组中的每个元素映射到内存块上,并且按照一定的布局对内存块进行排列,常用的布局方式有两种,即按行或者按列
ndarray 内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针
数据类型或 dtype,描述在数组中的固定大小值的格子
一个表示数组形状(shape)的元组,表示各维度大小的元组
一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数
ndarray 的内部结构:
跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此
创建ndarray对象
通过 NumPy 的内置函数 array() 可以创建 ndarray 对象,其语法格式如下:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数说明如下:
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否能被复制,可选,默认为True |
order | 以哪种内存布局创建数组,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
array() 是创建 ndarray 对象的基本方法
创建一维数组
a=numpy.array([1,2,3])
import numpy
a=numpy.array([1,2,3])#使用列表构建一维数组
print(a)
print(type(a))#ndarray数组类型
输出如下:
[1 2 3]
<class 'numpy.ndarray'>
创建多维数组
b=numpy.array([[1,2,3],[4,5,6]])
import numpy
b=numpy.array([[1,2,3],[4,5,6]])
print(b)
输出如下:
[[1 2 3]
[4 5 6]]
改变元素的数据类型
如果要改变数组元素的数据类型,可以使用通过设置 dtype,如下所示:
c=numpy.array([2,4,6,8],dtype="数据类型名称")
现在将 c 数组中的元素类型变成复数类型:
c=numpy.array([2,4,6,8],dtype="complex")
print(c)
输出如下:
[2.+0.j 4.+0.j 6.+0.j 8.+0.j]
ndim查看/指定数组维数
通过 ndim 可以查看数组的维度:
import numpy as np
arr = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [9, 10, 11, 23]])
print(arr.ndim)
2
也可以使用 ndim 参数创建不同维度的数组:
#输出一个二维数组
import numpy as np
a = np.array([1, 2, 3,4,5], ndim = 2)
print(a)
输出如下:
[[1 2 3 4 5]]
reshape数组变维
数组的形状指的是多维数组的行数和列数,Numpy 模块提供 reshape() 函数可以改变多维数组行数和列数,从而达到数组变维的目的。因此数组变维即对数组形状的重塑,如图所示:
reshape() 函数可以接受一个元组作为参数,用于指定了新数组的行数和列数,示例如下:
import numpy as np
e = np.array([[1,2],[3,4],[5,6]])
print("原数组",e)
e=e.reshape(2,3)
print("新数组",e)
输出如下:
原数组
[[1 2] [3 4] [5 6]]
新数组
[[1 2 3] [4 5 6]]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。