数据分析第二章

2.1 Numpy 数组对象ndarray

# 代码 2-1
import numpy as np #导入 NumPy 库 
arr1 = np.array([1, 2, 3, 4]) #创建一维数组 
print(' 创建的数组为: ',arr1)

# 创建二维数组
arr2 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
print('创建的数组为:\n',arr2)

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

创建的数组为:  [1 2 3 4]
创建的数组为:
 [[ 1  2  3  4]
 [ 4  5  6  7]
 [ 7  8  9 10]]
数组类型为: int32
数组元素个数为: 12
数组每个元素大小为: 4

#代码2-2
arr2.shape = 4,3 #重新设置shape
print('重新设置shape 后的arr2 为:',arr2)

重新设置shape 后的arr2 为: [[ 1  2  3]
 [ 4  4  5]
 [ 6  7  7]
 [ 8  9 10]]
# 代码 2-3
print('使用arange函数创建的数组为:\n',np.arange(0,1,0.1))
使用arange函数创建的数组为:
 [0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
# 代码 2-4
print('使用linspace函数创建的数组为:',np.linspace(0, 1, 12))
使用linspace函数创建的数组为: [0.         0.09090909 0.18181818 0.27272727 0.36363636 0.45454545
 0.54545455 0.63636364 0.72727273 0.81818182 0.90909091 1.        ]
# 代码 2-5
print('使用logspace函数创建的数组为:',np.logspace(0, 2, 20))
使用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.        ]
# 代码 2-6
print('使用zeros函数创建的数组为:',np.zeros((2,3)))
使用zeros函数创建的数组为: [[0. 0. 0.]
 [0. 0. 0.]]

# 代码 2-7
print('使用eye函数创建的数组为:',np.eye(3))
使用eye函数创建的数组为: [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

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

# 代码 2-9
print('使用ones函数的数组为:',np.ones((5,3)))
使用ones函数的数组为: [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
# 代码 2-10
print('转换结果为:',np.float64(42))  #整型转换为浮点型
print('转换结果为:',np.int8(42.0))  #浮点型转换为整型
print('转换结果为:',np.bool(42))  #整型转换为布尔型
print('转换结果为:',np.bool(0))  #整型转换为布尔型
print('转换结果为:',np.float(True))  #布尔型转换为浮点型
print('转换结果为:',np.float(False))  #布尔型转换为浮点型

# 代码 2-11
df = np.dtype([("name", np.str_, 40), ("numitems", np.int64),
    ("price",np.float64)])
print('数据类型为:',df)
转换结果为: 42.0
转换结果为: 42
转换结果为: True
转换结果为: False
转换结果为: 1.0
转换结果为: 0.0
# 代码 2-12
print('数据类型为:',df["name"])
print('数据类型为:',np.dtype(df["name"]))

# 代码 2-13
itemz = np.array([("tomatoes", 42, 4.14),("cabbages", 13, 1.72)],
    dtype=df)
print('自定义数据为:',itemz)
数据类型为: [('name', '<U40'), ('numitems', '<i8'), ('price', '<f8')]
数据类型为: <U40
数据类型为: <U40
自定义数据为: [('tomatoes', 42, 4.14) ('cabbages', 13, 1.72)]

# 代码 2-14
print('生成的随机数组为:',np.random.random(100))
生成的随机数组为: [0.29035712 0.55470355 0.99816392 0.33551347 0.08293463 0.44556531
 0.53178431 0.53789455 0.08234868 0.83595469 0.3726637  0.75765048
 0.84908519 0.78726763 0.72644826 0.52151699 0.28586194 0.21204481
 0.11809202 0.86587004 0.46615656 0.93567741 0.87892483 0.46163782
 0.12454961 0.22194019 0.01191737 0.98885821 0.64213461 0.47425751
 0.43595511 0.19188932 0.45667159 0.94831898 0.32661306 0.81921826
 0.08640067 0.45161776 0.24876485 0.7537096  0.34926257 0.99958294
 0.3468626  0.32769651 0.50291438 0.92793596 0.27697293 0.85170313
 0.94097034 0.04905478 0.3437512  0.26775942 0.62776722 0.24521679
 0.15484687 0.47635257 0.21294752 0.99159322 0.4599956  0.6910366
 0.62033643 0.5342566  0.18285407 0.02461278 0.29537463 0.99051524
 0.17719616 0.53491538 0.61218246 0.32800622 0.21922365 0.70199982
 0.22475512 0.33735773 0.416338   0.7015899  0.02271632 0.85216232
 0.36213282 0.0810605  0.12005646 0.04658047 0.37149021 0.30841899
 0.1747147  0.28758972 0.0799932  0.64748883 0.46751371 0.95372788
 0.10631499 0.39197466 0.12525545 0.74674668 0.68179737 0.07544131
 0.36196381 0.12442483 0.0824717  0.95521567]

# 代码 2-15
print('生成的随机数组为:\n',np.random.rand(10,5))
生成的随机数组为:
 [[0.32647198 0.51157664 0.81547476 0.20857105 0.18865529]
 [0.23704684 0.12060751 0.88961965 0.79585654 0.51432557]
 [0.57116832 0.55927659 0.1208306  0.78855248 0.37623374]
 [0.62105789 0.77303539 0.24961779 0.12021282 0.68787783]
 [0.44852622 0.3030715  0.45309526 0.18388185 0.99304243]
 [0.25515836 0.42006589 0.37400662 0.65236982 0.09921883]
 [0.79292742 0.00420025 0.66580352 0.49676793 0.12497231]
 [0.49485876 0.27306417 0.1897283  0.77697491 0.85439833]
 [0.49187305 0.69534968 0.65651651 0.40353288 0.17448197]
 [0.20280328 0.48615179 0.81480625 0.658735   0.4912505 ]]

# 代码 2-16
print('生成的随机数组为:\n',np.random.randn(10,5))
生成的随机数组为:
 [[-1.20040011  0.96614597  1.21709002  0.1595595   0.5086843 ]
 [-0.39222159  1.38469982  0.54565327 -0.05214325  0.37604684]
 [ 1.04510832 -0.43135193  0.09638756  0.19038356 -0.17510115]
 [-2.15550747  0.61733181  0.14047216 -0.52478051 -0.55958629]
 [-0.20052432 -1.43286048  0.62342899  0.8130792  -0.69504517]
 [ 1.97910891  0.01510512  0.72718736 -0.21584009 -0.1021117 ]
 [ 0.89979072  0.1266896  -0.02685013  0.29770082  0.47358179]
 [ 0.03862873  0.31637127 -1.75891469  1.04143655 -0.08164326]
 [ 0.85707273 -0.17493711  0.35506853  0.07412862  0.02447039]
 [-0.7488764  -0.50040087 -0.51384774  0.12427226 -1.79689403]]

# 代码 2-17
print('生成的随机数组为:',np.random.randint(2,10,size = [2,5]))
生成的随机数组为: [[2 2 9 8 3]
 [4 3 5 3 5]]
# 代码 2-18
arr = np.arange(10)
print('索引结果为:',arr[5])  #用整数作为下标可以获取数组中的某个元素
#用范围作为下标获取数组的一个切片,包括arr[3]不包括arr[5]
print('索引结果为:',arr[3:5])
print('索引结果为:',arr[:5])  #省略开始下标,表示从arr[0]开始
#下标可以使用负数,-1表示从数组后往前数的第一个元素
print('索引结果为:',arr[-1])

arr[2:4] = 100,101
print('索引结果为:',arr)  #下标还可以用来修改元素的值
#范围中的第三个参数表示步长,2表示隔一个元素取一个元素
print('索引结果为:',arr[1:-1:2])
print('索引结果为:',arr[5:1:-2])  #步长为负数时,开始下标必须大于结束下标
索引结果为: 5
索引结果为: [3 4]
索引结果为: [0 1 2 3 4]
索引结果为: 9
索引结果为: [  0   1 100 101   4   5   6   7   8   9]
索引结果为: [  1 101   5   7]
索引结果为: [  5 101]
# 代码 2-19
arr = np.array([[1, 2, 3, 4, 5],[4, 5, 6, 7, 8], [7, 8, 9, 10, 11]])
print('创建的二维数组为:',arr)
print('索引结果为:',arr[0,3:5])  #索引第0行中第3和第4列的元素
#索引第2和第3行中第3列、第4列和第5列的元素
print('索引结果为:\n',arr[1:,2:])
print('索引结果为:',arr[:,2])  #索引第2列的元素
创建的数组1为: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
创建的数组2为: [[ 0  3  6  9]
 [12 15 18 21]
 [24 27 30 33]]

# 代码 2-20
#从两个序列的对应位置取出两个整数组成下标:arr[0,1], arr[1,2], arr[2,3]
print('索引结果为:',arr[[(0,1,2),(1,2,3)]])
print('索引结果为:',arr[1:,(0,2,3)])  #索引第2、3行中第0、2、3列的元素

mask = np.array([1,0,1],dtype = np.bool)
#mask是一个布尔数组,它索引第1、3行中第2列的元素
print('索引结果为:',arr[mask,2])


# 代码 2-21
'''
arr = np.arange(12)  #创建一维数组
print('创建的一维数组为:',arr)
print('新的一维数组为:',arr.reshape(3,4))  #设置数组的形状
print('数组维度为:',arr.reshape(3,4).ndim)  #查看数组维度
'''

# 代码 2-22
arr = np.arange(12).reshape(3,4)
print('创建的二维数组为:',arr)
print('数组展平后为:',arr.ravel())

# 代码 2-23
print('数组展平为:',arr.flatten())  #横向展平
print('数组展平为:',arr.flatten('F'))  #纵向展平

# 代码 2-24
arr1 = np.arange(12).reshape(3,4)
print('创建的数组1为:',arr1)

arr2 = arr1*3
print('创建的数组2为:',arr2)
print('横向组合为:',np.hstack((arr1,arr2)))  #hstack函数横向组合

# 代码 2-25
print('纵向组合为:',np.vstack((arr1,arr2)))  #vstack函数纵向组合

# 代码 2-26
print('横向组合为:',np.concatenate((arr1,arr2),axis = 1))  #concatenate函数横向组合
print('纵向组合为:',np.concatenate((arr1,arr2),axis = 0))  #concatenate函数纵向组合

# 代码 2-27
arr = np.arange(16).reshape(4,4)
print('创建的二维数组为:',arr)
print('横向分割为:',np.hsplit(arr, 2))  #hsplit函数横向分割

# 代码 2-28
print('纵向分割为:',np.vsplit(arr, 2))  #vsplit函数纵向分割

# 代码 2-29
'''
print('横向分割为:',np.split(arr, 2, axis=1))  #split函数横向分割
print('纵向分割为:',np.split(arr, 2, axis=0))  #split函数纵向分割

横向分割为: [array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]

纵向分割为: [array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值