Numpy数值计算基础

(本人小白一枚,刚刚开始学习python,自己总结理解的知识点,有误之处还请多多指教。)

numpy是一个用python实现的科学计算,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

一、

1.下面是numpy的创建数组

import numpy as np    #此处调用numpy库

arr1 = np.array([0.3, 0.5, 4.2])         # 创建一维数组
arr2 = np.array([[3, 4, 5], [4, 2, 1]])  # 创建二维数组
print(arr1)
print(arr2)
print(type(arr1))

运行结果:

 2.numpy数组的基础属性

 举例代码:

 3.数组的向量化运算能力

# list1 ** 2     # 非法操作
print([i**2 for i in list1])
print(arr1 ** 2)

运行结果:

 二、

1.利用arange函数创建数组

arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,两者的区别仅仅是arange返回的是一个数据,而range返回的是list。

arr3 = np.arange(0, 10)
arr4 = np.arange(10)
arr5 = np.arange(0, 1, 0.1)
print(arr3)
print(arr4)
print(arr5)

运行结果:

 2.利用linspace函数创建数组

通过定义均匀间隔创建数值序列。其实,需要指定间隔起始点、终止端,以及指定分隔值总数(包括起始点和终止点);最终函数返回间隔类均匀分布的数值序列

arr6 = np.linspace(0, 1, 11)
print(arr6)

å¨è¿éæå¥å¾çæè¿°

arr6 = np.linspace(0, 1, 11)
print(arr6)

运行结果:

 3.利用zeros函数创建数组

 

arr7 = np.zeros([3, 4, 5])
print(arr7)

运行结果:

 4.在创建数组时声明数据类型

arr8 = np.array([3, 4, 5], dtype=np.float32)   # 在创建数组时,声明其数据类型
print(arr8)
print(arr8.dtype)

arr8[0] = 1.2    
print(arr8)
print(np.int32(arr8))   # 转换数组的数据类型

运行结果:

 三、

1.随机数的生成

print(np.random.random(10))   # 无约束条件下的随机数
print(np.random.rand(3, 4))   # 生成指定shape的均匀分布随机数
print(np.random.randn(2, 2, 3))   # 生成指定shape的正态分布随机数

运行结果:

 2.数组的索引

在数组的索引中,如果是对一维数组的单个元素进行索引,可直接arr[0],若对多个元素进行索引,则需要切片。

# 一维数组的单个元素的索引
print(arr1[0])   
print(arr1[-5])

# 一维数组的多个元素的索引(切片)
print(arr1[1:3])
print(arr1[-4:-2])

res1 = arr1[3]
res2 = arr1[3:4]
print(res1, res1.shape)
print(res2, res2.shape)

运行结果:

 3.逻辑型索引

arr2 = np.array([2.3, 1.8, 4.5])
print(arr2)
print(arr2[[False, False, True]])
index = arr2 > 2
print(index)
print(arr2[index])

运行结果:

 4.多维数组的索引

arr3 = np.arange(1, 13).reshape([3, 4])  #创建一个从[1-13),形状为3行4列的数组
print(arr3)
print(arr3[2, 3])  
print(arr3[2, 0:])   #索引第三行index=2的全部元素
print(arr3[:, 0])    #索引全部行的第一列元素
print(arr3[1:3, 1:3])  #取第二行前三列元素与第二列前三行的元素之间的交集

print(arr3[2:, :])   # 注意返回值的shape

print(arr3[arr3[:, 0] > 4, :])  # 二维数组的逻辑型索引

运行结果:

5.修改数组中的元素

arr3 = np.arange(1, 13).reshape([3, 4])
print(arr3)
arr3[0, 0] = 15
print(arr3)

 四、

1.求解距离矩阵

n = 100    # 样本个数
x = np.linspace(1, 100, n)    # 样本的横坐标
y = np.linspace(1, 100, n)    # 样本的纵坐标

dist = np.zeros([n, n])       # 初始距离矩阵

for i in range(n):
    for j in range(n):
        dist[i, j] = np.sqrt((x[i] - x[j])**2 + (y[i] - y[j])**2)   # 计算欧式距离

print(x)
print(y)
print(dist)

运行结果:

 2.数组形态的变化

arr4 = np.arange(1, 13)
print(arr4)
print(arr4.reshape([3, 4]))  # 改变数组的shape
print(arr4.reshape([4, 3]))

arr5 = arr4.reshape([3, 4])   # 生成二维数组
print(arr5)
print(arr5.ravel())   # 数组展平
arr5.flatten()

arr6 = arr4.reshape([3, 4])
print(arr6)
print(np.vstack([arr5, arr6]))    # 纵向组合
print(np.hstack((arr5, arr6)))    # 横向组合

运行结果:

 

 五、

1.掌握Numpy矩阵与通用函数

matr1 = np.mat("1 2 3;4 5 6;7 8 9")
print(matr1)
print(type(matr1))

matr2 = np.matrix([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
print(matr2)
print(type(matr2))

print(np.bmat('matr1 matr2; matr1, matr2'))   # 矩阵拼接

print(matr1.T)   # 矩阵的转置
print(matr1.I)   # 矩阵的逆

运行结果:

 今天就到这里,有关numpy矩阵与通用函数以及利用numpy进行数据分析的内容,我下次进行总结和分析(因为我现在也不太懂哈哈哈哈),感谢大家的支持与评价~我会继续努力的!

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值