Numpy库N维数组对象--ndarray数组之全解

导入import numpy as np 约定将numpy库简写为np

ndarray数组:由俩部分组成

  • 实际数据
  • 描述这些数据的元数据的数据维度与数据类型

ndarray数组一般要求所有元素的数据类型相同,下标从0开始
使用np.array()生成一个ndarray数组,ndarray数组包括:

  • 轴 axis 保存数据的维度
  • 秩 rank 轴的数量
ndarray的属性
属性名 描述
.ndim
.shape ndarray对象的尺度
.size 对象元素的总个数
.dtype 对象的元素类型
.itemsize 对象中每个元素的大小,一字节为单位

具体效果见代码

>>> import numpy as np
>>> b=np.arange(6)
>>> b
array([0, 1, 2, 3, 4, 5])
>>> b.ndim
1
>>> b.shape
(6,)
>>> b.size
6
>>> b.dtype
dtype('int32')
>>> b.itemsize
4
ndarray的数据类型
数据类型 描述
bool 布尔类型,取值为 True 或 False
intc 与c语言的int类型一致,一般为int32 或 int64
intp 用于索引的整数,一般为int32 或 int64
int8 字节长度的整数,[-128,127]
int16 字节长度的整数,[-32768,32767]
int32 字节长度的整数,[-2^32 , 2^32-1]
int64 字节长度的整数,[-2^64 , 2^64 -1]
uint8 8位无符号的整数 [0,255]
uint16 16位无符号的整数 [0,65535]
uint32 32位无符号的整数 [0,2^32-1]
uint64 64位无符号的整数 [0,2^64-1]
float16 16位半精度的浮点数,1位符号位,5位指数,10位尾数
float32 32位半精度的浮点数,1位符号位,8位指数,23位尾数
float64 64位半精度的浮点数,1位符号位,11位指数,52位尾数
complex64 复数类型,实部与虚部都是32位浮点数
complex123 复数类型,实部与虚部都是64位浮点数

在python基础中只有几种的数据类型,这里为什么要分这么多种呢?
因为numpy库是用于科学计算,故需要划分清楚


非同质的ndarray数组

c=np.array([[1,2,3],[0,1,2,3,4]])
c.dtype

这个时候c.dtype返回的是指Object


创建ndarray数组

  • 使用列表或者元组 a = np.array(list/tuple)
  • 使用函数

》》》使用列表或者元组等容器创建

>>>import numpy as np
>>> x=np.array([1,2,3,4])
>>> x
array([1, 2, 3, 4])
>>> y=np.array({1,2,3,4})
>>> y
array({1, 2, 3, 4}, dtype=object)
>>> z=np.array((1,2,3,4,8))
>>> z
array([1, 2, 3, 4, 8])

》》》使用函数创建

函数名 描述及说明
np.arange(n) 返回ndarray类型,生成的元素从0到n-1
np.ones(shape) 根据shape生成一个全一数组,shape是元组类型
np.zero(shape) 根据shape生成一个全0数组,shape是元组类型
np.full(shape,val) 根据shape生成一个数组,每个元素都是val
np.eye(n) 创建一个正方形n*n的单位矩阵,对角线元素为1,其余为0
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zero_like(a) 根据数组a的形状生成一个全0数组
np.full_like(a,val) 根据数组a的形状生成一个全 val 数组
np.linspace(a) 根据起止数据等间距填充数据
np.concatenate() 将俩个或多个数组合并生成一个新数组

实例(部分方法):

>>> a=np.linspace(1,10,4)
>>> a
array([ 1.,  4.,  7., 10.])#经过了运算生成的都是浮点数
>>> b=np.ones((2,3,4),dtype=np.int32)
>>> b
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]])
>>> b.reshape((3,8))
array([[1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1]])

astype()一定会创建一个新的数组

ndarray数组对列表的转换

tolist()函数

>>> c=np.full((2,3,4),25,dtype=np.int32)
>>> c
array([[[25, 25, 25, 25],
        [25, 25, 25, 25],
        [25, 25, 25, 25]],

       [[25, 25, 25, 25],
        [25, 25, 25, 25],
        [25, 25, 25, 25]]])
>>> c.tolist()
[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]

你可能感兴趣的:(#,python数据分析与展示)