天天看点

python创建类对象数组_【Python数据分析】NumPy之数组对象基础

1.数组对象基础

ndarray是NumPy的核心功能,其含义是:n-dimensional array,即多维数组。在Python中万物皆对象,数组也是一个对象,数组是NumPy的一个重要数据结构。

2.初识数组对象

在Jupyter中查看NumPy的版本(按shift + enter即可运行代码)

import numpy as np

np.__version__

输出结果如下:

python创建类对象数组_【Python数据分析】NumPy之数组对象基础

2.1 创建第一个数组

In [2]: data = np.array([1, 2, 3, 4, 5, 6])

In [3]: data

Out[3]: array([1, 2, 3, 4, 5, 6])

In [4]: type(data)

Out[4]: numpy.ndarray

小提示:此处可以使用dir(data)查看数组对象的属性和方法。如果使用data?可以打开数组的官方文档

2.2 数组元素的类型dtype

# dtype可以查看数组元素的类型

In [9]: data.dtype

Out[9]: dtype('int32')

从输出结果得出数组元素的类型为int32,即32位的整数。

数组元素类型的改变

In [18]: new_data = data.astype(np.float)

In [19]: new_data.dtype

Out[19]: dtype('float64')

In [20]: data, data.dtype

Out[20]: (array([1, 2, 3, 4, 5, 6]), dtype('int32'))

In [21]: new_data

Out[21]: array([1., 2., 3., 4., 5., 6.])

数组data相对于new_data只有数组元素类型不同

2.2 数组的外貌

(1)shape可以查看数组的形状

In [22]: data2 = np.array([1, 2, 3, 4])

In [23]: data2.shape

Out[23]: (4,)

返回结果表示是一维数组。

(2)ndim返回数组的维度

In [24]: data2.ndim

Out[24]: 1

(3) size返回数组元素的个数

In [25]: data2.size

Out[25]: 4

NumPy常用数组对象属性表

属性

说明

dtype

返回数组元素的类型

shape

返回由整数组成的元组,元组中的每个整数依次对应数组的每个轴的元素个数

size

返回一个整数,代表数组元素中的个数

ndim

返回一个整数,代表数组轴的个数,即维度

nbytes

返回一个整数,代表用于保存数组的字节数

小提示:可以通过help(data2.dtype)或者data2.dtype?查看帮助文档

3.数组的创建方法

3.1 基本方法

# 一维数组创建

In [31]: np.array([1, 2, 3, 4, 5], dtype=float)

Out[31]: array([1., 2., 3., 4., 5.])

# 多维数组创建

# 通过嵌套列表创建的数组就是多维数组

In [33]: np.array([[1, 2, 3],[10, 20, 30],[100, 200, 300]])

Out[33]:

array([[ 1, 2, 3],

[ 10, 20, 30],

[100, 200, 300]])

# 注意:嵌套列表的每个元素的长度与类型都必须一致

(3)指定维度创建

# ndmin指定最小维度数

In [39]: data3 = np.array([1, 2, 3, 4, 5, 6, 7, 8], ndmin=2)

In [40]: data3.shape

Out[40]: (1, 8)

3.2 用函数创建数组

In [41]: np.zeros((2,10))

Out[41]:

array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],

[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])

此处的np.zeros()能够创建一个完全由0组成的数组,(2,10)是以元组形式声明该数组的形状

NumPy中创建特殊数组的函数

函数

说明

asarray

输入参数为列表、元组,或者由他们组成的嵌套对象或数组,返回一个数组。如果参数是数组,则返回该数组本身

arange

根据开始值、结束值和步长创建一个数组

ones、ones_like

ones根据指定的形状和元素类型,创建元素值为1的数组。ones_like创建一个与某指定数组完全一样但元素值是1的数组

zeros、zeros_like

与上述相同,只不过元素是0

empty、empty_like

与上述相同,只不过没有填充任何元素数据,但分配了内存空间

eye、identity

创建对角线元素是1、其他元素是0的二维数组

diag

创建对角线元素是指定值,其余元素是0的二维数组

linspace

根据开始值、结束值和元素数量创建元素是等差数列的数组

logspace

根据开始值、结束值和元素数量和对数底创建元素是等比数列的数组

3.3 创建自定义类型的数组

In [67]: my_type = np.dtype([('name',str, 20),('age',np.int8),('salary', np.float32)])

In [68]: items = np.array([('Jack',18,1000.00),('Lucy',19,2000.00)], dtype=my_type)

In [69]: print(items.dtype)

[('name', '

3.4 form系列的函数创建数组

创建9*9乘法结果表数组

In [74]: np.fromfunction(lambda i, j:(i+1)*(j+1), (9, 9), dtype=np.int)

Out[74]:

array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9],

[ 2, 4, 6, 8, 10, 12, 14, 16, 18],

[ 3, 6, 9, 12, 15, 18, 21, 24, 27],

[ 4, 8, 12, 16, 20, 24, 28, 32, 36],

[ 5, 10, 15, 20, 25, 30, 35, 40, 45],

[ 6, 12, 18, 24, 30, 36, 42, 48, 54],

[ 7, 14, 21, 28, 35, 42, 49, 56, 63],

[ 8, 16, 24, 32, 40, 48, 56, 64, 72],

[ 9, 18, 27, 36, 45, 54, 63, 72, 81]])