Numpy Ndarray对象:
一、创建数组的方式
- 根据列表创建数组
a=np.array([1,2,3,4,5])
print(a)
输出:
这就不再是一个列表了,而是一个数组,可以看。
可以向参数[1,2,3,4,5]传指令,如:
a=np.array([1,2,3,4,5],dtype=int)
print(a)
b=np.array([1,2,3],dtype=float)
print(b)
输出:
数组内的元素的数据类型分别被要求是整型和浮点型,默认是浮点型。
a=[(1,2),(1,2,3)]
b=np.array(a)
print(b)
- 根据元组创建数组
a=np.array((1,2,3,4,5),dtype=int)
print(a)
- 根据内置函数创建数组
(1)numpy.empty()
empty圆括号里可以输入整数或者整数的列表
a=np.empty([3])
print(a)
a=np.empty([2,3])
print(a)
关于数组里形状后面解释。
(2)numpy.ones()
a=np.ones([2],dtype=int)
print(a)
a=np.ones(2,dtype=int)
print(a)
a=np.ones([2,3],dtype=int)
print(a)
(3)numpy.zeros()
a=np.zeros(3,dtype=int)
print(a)
a=np.zeros([3,4],dtype=int)
print(a)
(4)numpy.eye()
eye圆括号里只能输入整数,不能输入列表,这点和上面三个内置函数就不一样。
a=np.eye(2)
print(a)
a=np.eye([2,3])
print(a)
- numpy.arange()
将括号里的合理东西转化成数组
b=np.arange(10)
print(b)
区分它和range(),range(n)就是个range(0,n)可以将它转化成列表,再将列表转化成数组:
a=range(10)
b=list(a)
print(a)
print(b)
c=np.array(a)
print(c)
numpy.arange()与numpy.array()都将xxx转换成数组,但arange效率更高,numpy.arange(start, stop, step, dtype):
a=np.arange(1,10,2)
print(a)
- 数组变形
例,将range(20)弄成225的数组,错误写法:
因为arange()括号得传一个数, 而a是一个range(0,20).
可以先将a转成数组,再重塑:
a=range(20)
b=np.array(a)
print(b.reshape(2,2,5))
二、数组基础
- 数组属性
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.ndim 秩,轴的数量或维度的数量
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
举例分析:
例1
a=np.array([[[1,2,3],[1,2,3]]])
print(a)
print(a.shape)
print(a.ndim)
print(a.size)
print(a.dtype)
(1)ndarray.shape输出的(1,2,3),1表示最外面的一个中括号里有1个元素——1个中括号,2表示第二外面的中括号里有2个元素——2个中括号,3表示最里面的中括号里有3个元素——3个数。
(2)ndarray.ndim输出的是数组的维度,有几层中括号,就有几维,这里有3层,最内层的两个中括号是并列的关系。
(3)ndarray.size为6是123
例2
a=np.array([[1,2,3],[1,2,3]])
print(a)
print(a.shape)
print(a.ndim)
print(a.size)
print(a.dtype)
(1)a.shape输出的是(2,3),2表示最外面一层中括号有2个元素——2个中括号,3表示第2外层(最里层)中括号里有3个元素——3个数。
(2)a.ndim输出是2,有2层中括号就有2维。
(3)a.size=6=2*3
例3
a=np.array(10)
b=np.array([10])
print(a)
print(type(a))
print(a.shape)
print(a.ndim)
print(a.size)
print(b)
print(b.shape)
print(b.ndim)
print(b.size)
(1)np.array(10)输出是10,但仍然是数组。注意它的ndim是0,也就是说一个数转换成数组后维度是0.
(2)b的参数是个列表[10],看,有个中括号,它的维度是1。