(五)python学习笔记之numpy快速入门程序

numpy官方的快速入门指导网站
https://docs.scipy.org/doc/numpy/user/quickstart.html

import numpy as np


a = np.arange(15).reshape(3, 5)  # 创建一个0到15的,3行5列的对象
print(a)
# 轴数
print(a.ndim)
# 各轴维数
print(a.shape)
# 元素大小
print(a.size)
# 元素类型
print(a.dtype)
# 每个元素占的字节数
print(a.itemsize)
# 查看内存位置
print(a.data)
# 查看对象类型
print(type(a))
# 矩阵生成方法
b = np.array([2, 3, 4])
print(type(b))
# 矩阵生成方法
c = np.array([(2, 3, 4), (5, 6, 7)])
print(c)
# 零矩阵
d = np.zeros((3, 4))
print(d)
# [2,13)之间差为5的数
e = np.arange(2, 13, 5)
print(e)
# 生成全是1的数组
f = np.ones((2, 5))
print(f)
# 生成随机数
g = np.empty((2, 5))
print(g)
# 生成0-2之间的9个随机数
g = np.linspace(0, 2, 9)
print(g)
# 生成二行三列,0-1之间的随机数
g = np.random.random((2, 3))
print(g)
# e的幂次
h = np.exp(3)
print("e的幂次")
print(h)

# 基本运算
# 减运算为按位减,如果两矩阵不同维的话会报错,加运算同理
a = np.array([20, 30, 40, 50])
b = np.arange(4)
print("减运算")
print(b)
c = a-b
print(c)
# 乘运算
a = np.array([[1, 1],
              [0, 1]])
b = np.array([[2, 0],
              [3, 4]])
print("乘运算,*为元素按位乘")
print(a * b)
print("矩阵乘运算1,@为矩阵乘")
print(a @ b)
print("矩阵乘运算2")
print(a.dot(b))
# 基本操作
a = np.random.random((2,3))
print("基本操作")
print(a)
print("求和")
print(a.sum())
print("取最小")
print(a.min())
print("取最大")
print(a.max())

# 轴操作
b = np.arange(12).reshape(3, 4)
print("轴操作")
print(b)
print("求各行和")
print(b.sum(axis=0))
print("求各列和")
print(b.sum(axis=1))
print("各行各位数为行前的数的累加")
print(b.cumsum(axis=0))

# 运算
a = np.arange(3)
print("常用运算")
print(a)
print("取e得对数")
print(np.exp(a))
print("平方根")
print(np.sqrt(a))
c = np.array([2., -1., 4.])
print("求和")
print(np.add(a, c))

# 数组操作
a =np.arange(10)**3
print("数组操作")
print(a)
print("第二位数")
print(a[2])
print("第2到5位数")
print(a[2:5])
print("数组第[0,6)位,每隔2位赋值为-1000")
a[:6:2] = -1000
print(a)
print("数组转置")
print(a[::-1])


# 依据行列相关函数输出数组
def f(x, y):
    return 10*x+y


# 依据该行列函数f建立一个五行四列的矩阵
print("依据该行列函数f建立一个五行四列的矩阵")
b = np.fromfunction(f,(5,4),dtype=int)
print(b)
print("显示列为1,行为0-5的5个数")
print(b[0:5, 1])
print("显示列为1的5个数")
print(b[:, 1])
print("显示列为1的数1-5")
print(b[1:5, 1])
print("三维")
c = np.array([[[0,  1,  2],               # a 3D array (two stacked 2D arrays)
                [10, 12, 13]],
                [[100, 101, 102],
                [110, 112, 113]]])
print("维度")
print(c.shape)
print("行为1的所有数")
print(c[1, ...])
print("最后一维度为2的所有")
print(c[..., 2])
print("输出c中的所有单个元素")
for i in c.flat:
    print(i)
print("重设c的形状")
c.resize((2, 6))
print(c)
print("重设c的形状,让最后一维度自动计算大小")
c = c.reshape(3, -1)
print(c)

# 将不同的numpy对象合并
# 返回不大于输入的最大整数
print("随机数组a")
a = np.floor(10*np.random.random((2, 2)))
print(a)
print("随机数组b")
b = np.floor(10*np.random.random((2, 2)))
print(b)
print("用vstack方法将数据放到一起")
print(np.vstack((a, b)))
print("用hstack方法将数据放到一起")
print(np.hstack((a, b)))
print("用column_stack方法将数据放到一起")
print(np.column_stack((a, b)))

print("数组a")
a = np.array([4.,2.])
print(a)
print("数组b")
b = np.array([2.,8.])
print(b)
print("用column_stack方法将数据放到一起")
print(np.column_stack((a,b)))
print("用vstack方法将数据放到一起")
print(np.vstack((a, b)))
print("用hstack方法将数据放到一起")
print(np.hstack((a, b)))

print("numpy对象的拆分")
print("数组a")
a = np.floor(10*np.random.random((2, 12)))
print(a)
print("用hsplit对数组进行拆分")
print(np.hsplit(a,3))
print("用hsplit对数组进行拆分(3,4)")
print(np.hsplit(a, (3, 4)))

print("用等号对numpy数组进行复制操作智能复制一个引用,并没有创建新的对象")
a = np.arange(12)
b = a
print("b is a?")
print(b is a)
print("对b执行resize操作")
b.resize((3, 4))
print("b")
print(b)
print("a")
print(a)
print("地址一致")
print("id b")
print(id(b))
print("id a")
print(id(a))

print("用a.view()方法可以创建一个新的对象")
c = a.view()
print("c is a?")
print(c is a)
print("c.base is a?")
print(c.base is a)
c[0, 0] = 111
print("但是如果改变c中的数据,任然会改变a")
print(a)

print("一种快速修改a中数据的方法")
s = a[:, 1:3]
s[:] = 10
print(a)


print("用a.copy()方法可以创建一个新的对象,对该对象的修改不会影响a")
c = a.copy()
c[0, 0] = 100
print(a)

print("获取np对象的部分内容")
a = np.arange(12)**2
i = np.array([1, 1, 2, 3])
print(a)
print(a[i])
j = np.array([[1, 2], [3, 4]])
print(a[j])

print("获取i中放行名,j中放列名的组合")
a = np.arange(12)
a.resize((3,4))
i = np.array([[0, 1],
              [1, 2]])
j = np.array([[0, 2],
              [1, 0]])
print(a)
print("a[i, j]")
print(a[i, j])
print("a[i, 2]")
print(a[i, 2])
print("a[i,:]")
print(a[i,:])

print("使用布尔访问数据")
a = np.arange(12).reshape(3,4)
b = a > 4
print("a:")
print(a)
print("b:")
print(b)
a[b] = 0
print("a:")
print(a)

print("原始矩阵")
a = [[1, 3],
     [2, 4]]
print(a)
print("转置")
print(np.transpose(a))
print("求逆矩阵")
print(np.linalg.inv(a))
print("单位矩阵")
u = np.eye(2)
print(u)
print("u的trace")
print(np.trace(u))
y = np.array([[2], [3]])
z = np.linalg.solve(a,y)
print(z)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值