python123数列求和_python数据分析(1)--numpy

本文介绍了NumPy库在Python中的基本使用,包括ndarray的属性、创建数组、随机数生成以及常见操作。讲解了如zeros、ones、rand、randInt、randn等函数,并展示了数组的加减乘除、指数、对数等数学运算。同时,还涉及矩阵操作如单位矩阵、逆矩阵、转置、行列式和线性方程组的求解。最后,提到了numpy的FFT计算、相关系数计算及一元多项式函数的生成。
摘要由CSDN通过智能技术生成

简介

NumPy系统是Python的一种开源的数值计算扩展,可用来存储和处理大型矩阵。

numpy中的array

ndarray是numpy提供的一种数组,python的数组可以存放各种类型和对象,运行速度下降,而ndarray为了提高运行速度,底层用c实现,限定只能使用一种类型。ndarray有以下几个常用属性

属性

说明

shape

几行几列

ndim

数组维度

dtype

数组元素的类型

itemsize

数组中每个元素的大小

size

数组中元素的个数

下面分别打印以下这几个属性

list = [[1,2,3], [4,5,6], [7,8,9]]

# 新建一个元素类型为int64的数组

numpy_list = numpy.array(list, dtype=numpy.int64)

print(numpy_list.shape)

print(numpy_list.ndim)

print(numpy_list.dtype)

print(numpy_list.itemsize)

print(numpy_list.size)

结果如下

(3, 3)

2

int64

8

9

常用array

array

说明

numpy.zeros[row, col]

全零数组

numpy.ones[row, col]

全一数组

numpy.random.rand

生成随机数

numpy.random.randInt(low, hight)

生成指定范围内的随机整数

numpy.random.randn

正态分布随机数

numpy.random.choice()

从指定的数组中生成随机数

numpy.random.beta

beta分布

print(numpy.zeros([2, 3]))

print(numpy.ones([3, 5]))

print(numpy.random.rand())

print(numpy.random.randint(1,2))

print(numpy.random.randn())

print(numpy.random.beta(1, 1, 2))

[[ 0. 0. 0.]

[ 0. 0. 0.]]

[[ 1. 1. 1. 1. 1.]

[ 1. 1. 1. 1. 1.]

[ 1. 1. 1. 1. 1.]]

0.6256807713479122

1

1.1866001408917326

[ 0.68579746 0.93474434]

常用操作

以下的list都是numpy的array

函数

说明

numpy.arange(low, high)

产生等差数列,范围[1,10)

list.reshape([row, col])

将数组转换成指定行列的数组

numpy.exp(list)

指数

numpy.sin(list)

三角函数

numpy.log(list)

对数

list.sum(axis)

求和,axis指对数组深入的程度

list.max(axis)

最大值

list.min(axis)

最小值

list1+list2

数组元素相加

list1-list2

list1*list2

list1/list2

numpy.dot()

矩阵点乘

numpy.concatenate(list1, list2)

追加数组

numpy.vstack(list1, list2)

numpy.hstack(list1, list2)

munpy.split(list, n)

将数组切分成n份

numpy.copy(list)

拷贝array

测试程序

list = numpy.arange(1, 9)

print("等差数列")

print(list)

#-1为默认值

print("转换多维数组")

print(list.reshape(2,-1))

print("指数计算")

print(numpy.exp(list.reshape(2, -1)))

l = [[1,2,3], [4,5,6], [7,8,9]]

numpy_list = numpy.array(l)

print("求和计算")

# 深度为1的结果

print("axis=0")

print(numpy_list.sum(axis=0))

# 深度为2的结果

print("axis=1")

print(numpy_list.sum(axis=1))

print("数组相加")

list1 = numpy.array([[1,2,3], [4,5,6]])

list2 = numpy.array([[2,3,4], [3,4,5]])

print(list1 + list2)

输出结果

等差数列

[1 2 3 4 5 6 7 8]

转换多维数组

[[1 2 3 4]

[5 6 7 8]]

指数计算

[[ 2.71828183e+00 7.38905610e+00 2.00855369e+01 5.45981500e+01]

[ 1.48413159e+02 4.03428793e+02 1.09663316e+03 2.98095799e+03]]

求和计算

axis=0

[12 15 18]

axis=1

[ 6 15 24]

数组相加

[[ 3 5 7]

[ 7 9 11]]

矩阵操作和线性方程组

函数

说明

numpy.eye()

生成单位矩阵

inv(list)

求逆矩阵

list.transpose()

求转置矩阵

det(list)

求矩阵的行列式

eig(list)

求特征值和特征向量,返回值第一个元组为特征值,第二个元组是特征向量

solve(list, y)

求解方程组

测试程序

#encoding-utf8

import numpy

from numpy.linalg import *

def main():

print("单位矩阵")

print(numpy.eye(3))

list = numpy.array([[3, 5], [7, 9]])

print("逆矩阵")

print(inv(list))

print("转置矩阵")

print(list.transpose())

print("矩阵行列式")

print(det(list))

print("特征值和特征向量")

print(eig(list))

print("求解二元方程: 3x+7y=2, 5x+9y=5")

y = numpy.array([[2], [5]])

print(solve(list, y))

pass

if __name__ == '__main__':

main()

输出结果

单位矩阵

[[ 1. 0. 0.]

[ 0. 1. 0.]

[ 0. 0. 1.]]

逆矩阵

[[-1.125 0.625]

[ 0.875 -0.375]]

转置矩阵

[[3 7]

[5 9]]

矩阵行列式

-8.0

特征值和特征向量

(array([ -0.63324958, 12.63324958]), array([[-0.80897568, -0.46067886],

[ 0.58784211, -0.88756689]]))

求解二元方程

[[ 0.875]

[-0.125]]

其它

函数

说明

numpy.fft.fft()

FTT计算

numpy.corrcoef()

计算相关系数

numpy.poly1d()

生成一元多次函数

测试程序

#encoding-utf8

import numpy

def main():

print("FFT")

print(numpy.fft.fft(numpy.ones([1,6])))

print("相关系数")

print(numpy.corrcoef([1,0,1], [0,1,0]))

print("生成一元多次函数")

print(numpy.poly1d([1,2,3]))

pass

if __name__ == '__main__':

main()

输出结果

FFT

[[ 6.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]]

相关系数

[[ 1. -1.]

[-1. 1.]]

生成一元多次函数

2

1 x + 2 x + 3

小结

以上就是numpy简单的使用,numpy主要用于对矩阵的操作和变换,对矩阵计算简化过程,可以提供很大的便利。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值