数据挖掘技术-创建数组对象

创建一维数组与多维数组并查看数组属性。如代码 41所示。

代码 41 创建并查看数组属性

In[1]:

import numpy as np          #导入NumPy库

arr1 = np.array([1, 2, 3, 4])  #创建一维数组

print('创建的数组为:',arr1)

Out[1]:

创建的数组为: [1 2 3 4]

In[2]:

arr2 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])    #创建二维数组

print('创建的数组为:\n',arr2)

Out[2]:

创建的数组为:

 [[ 1  2  3  4]

 [ 4  5  6  7]

 [ 7  8  9 10]]

In[3]:

print('数组维度为:',arr2.shape)  #查看数组结构

Out[3]:

数组维度为: (3, 4)

In[4]:

print('数组维度为:',arr2.dtype)  #查看数组类型

Out[4]:

数组维度为: int64

In[5]:

print('数组元素个数为:',arr2.size)  #查看数组元素个数

Out[5]:

数组元素个数为: 12

In[6]:

print('数组每个元素大小为:',arr2.itemsize)  #查看数组每个元素大小

Out[6]:

数组每个元素大小为: 8

数组arr1只有一个元素,因此它是一维数组。而数组arr2有三行四列元素,因此它是二维数组,其中第0轴的长度为3(即行数),第1轴的长度为4(即列数)。还可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。代码 42将数组arr2的shape改为(4,3),注意从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素的顺序并没有改变。

代码 42重新设置数组shape

In[7]:

arr2.shape = 4,3                   #重新设置shape维度

print('重新设置shape维度后的arr2为:',arr2)

Out[7]:

重新设置shape维度后的arr2为: [[ 1  2  3]

 [ 4  4  5]

 [ 6  7  7]

 [ 8  9 10]]

arange函数类似于Python基础自带函数range,通过指定开始值,终值和步长来创建一维数组,创建的数组是不含终值的,如代码 43所示。

代码 43使用arange函数创建数组

In[9]:

print('使用arange函数创建的数组为:',np.arange(0,1,0.1))  #创建一维数组

Out[9]:

使用arange函数创建的数组为: [ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9]

linspace函数通过指定开始值,终值和元素个数来创建一维数组,默认设置是包括终值,这一点需要和arange函数区分,如代码 44所示。

代码 44使用linspace函数创建数组

In[10]:

print('使用linspace函数创建的数组为:',np.linspace(0, 1, 12))

Out[10]:

 使用linspace函数创建的数组为: [0.         0.09090909 0.18181818 0.27272727 0.36363636 0.45454545

 0.54545455 0.63636364 0.72727273 0.81818182 0.90909091 1.        ]

logspace函数和linspace函数类似,其创建的是等比数列。生成1()到100(),有20个元素的等比数列,如代码 45所示。

代码 45 使用logspace函数创建等比数组

In[11]:

print('使用logspace函数创建的数组为:',np.logspace(0, 2, 20))

Out[11]:

 使用logspace函数创建的数组为: [  1.           1.27427499   1.62377674   2.06913808   2.6366509

   3.35981829   4.2813324    5.45559478   6.95192796   8.8586679

  11.28837892  14.38449888  18.32980711  23.35721469  29.76351442

  37.92690191  48.32930239  61.58482111  78.47599704 100.        ]

NumPy还提供了其他函数创建特殊数组,如zeros,eye,diag和ones等。

其中zeros函数,用来创建值全部为0的数组,即创建的数组值全部填充为0,如代码 46所示。

代码 46 使用zeros函数创建数组

In[12]:

print('使用zeros函数创建的数组为:',np.zeros((2,3)))

Out[12]:

使用zeros函数创建的数组为: [[ 0.  0.  0.]

 [ 0.  0.  0.]]

eye函数,用来生成类似单位数组,在主对角线上的元素为1,其他的元素为0,如代码 47所示。

代码 47 使用eye函数创建数组

In[13]:

print('使用eye函数创建的数组为:',np.eye(3))

Out[13]:

使用eye函数创建的数组为: [[ 1.  0.  0.]

 [ 0.  1.  0.]

 [ 0.  0.  1.]]

diag函数,创建类似对角的数组。即除对角线以外其他元素都为0。对角线上的元素可以是0或其他值,如代码 48所示。

代码 48 使用diag函数创建数组

In[14]:

print('使用diag函数创建的数组为:',np.diag([1,2,3,4]))

Out[14]:

使用diag函数创建的数组为: [[1 0 0 0]

 [0 2 0 0]

 [0 0 3 0]

 [0 0 0 4]]

ones函数,用来创建元素全部为1的数组,即创建的数组元素全部填充为1,如代码 49所示。

代码 49 使用ones函数创建数组

In[15]:

print('使用ones函数创建的数组为:',np.ones((5,3)))

Out[15]:

使用ones函数创建的数组为: [[ 1.  1.  1.]

 [ 1.  1.  1.]

 [ 1.  1.  1.]

 [ 1.  1.  1.]

 [ 1.  1.  1.]]

对于NumPy数组中的数据类型,每一个数据类型均有对应的转换函数,如代码 410所示。

代码 410 数组数据类型转换

In[16]:

print('转换结果为:',np.float64(42))  #整型转换为浮点型

Out[16]:

转换结果为: 42.0

In[17]:

print('转换结果为:',np.int8(42.0))  #浮点型转换为整型

Out[17]:

转换结果为: 42

In[18]:

print('转换结果为:',np.bool(42))  #整型转换为布尔型

Out[18]:

转换结果为: True

In[19]:

print('转换结果为:',np.bool(0))  #整型转换为布尔型

Out[19]:

转换结果为: False

In[20]:

print('转换结果为:',np.float(True))  #布尔型转换为浮点型

Out[20]:

转换结果为: 1.0

In[21]:

print('转换结果为:',np.float(False))  #布尔型转换为浮点型

Out[21]:

转换结果为: 0.0

为了更好地帮助读者理解数据结构,下面将创建一个存储餐饮企业库存信息的数据类型。其中,用一个长度为40个字符的字符串来记录商品的名称,用一个64位的整数来记录商品的库存数量,最后用一个64位的单精度浮点数来记录商品的价格,具体步骤如下。

  1. 创建数据类型,如代码 411所示。

代码 411 创建数据类型

In[22]:

df = np.dtype([("name", np.str_, 40), ("numitems", np.int64), ("price",np.float64)])

print('数据类型为:',df)

Out[22]:

数据类型为: [('name', '<U40'), ('numitems', '<i8'), ('price', '<f8')]

  1. 查看数据类型,可以直接查看或者使用numpy.dtype函数查看,如代码 412所示。

代码 412 查看数据类型

In[23]:

print('数据类型为:',df["name"])

Out[23]:

数据类型为:<U40

In[24]:

print('数据类型为:',np.dtype(df["name"]))

Out[24]:

数据类型为:<U40

在使用array函数创建数组时,数组的数据类型默认是浮点型。自定义数组数据,则可以预先指定数据类型,如代码 413所示。

代码 413 自定义数组数据

In[25]:

itemz = np.array([("tomatoes", 42, 4.14), ("cabbages", 13, 1.72)], dtype=df)

print('自定义数据为:',itemz)

Out[25]:

自定义数据为: [('tomatoes', 42,  4.14) ('cabbages', 13,  1.72)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值