numpy

这篇文章介绍了numpy库的一些基本操作,包括如何创建和初始化数组、矩阵的属性(如维度、形状、尺寸)、矩阵的运算(加法、减法、乘法、次方等)、索引、合并和分割,以及如何进行复制。还涉及到一些高级功能,如随机数生成、统计计算(如平均值、中位数)和矩阵乘法。
摘要由CSDN通过智能技术生成

numpy

P1-numpy属性

import numpy as np

# 创建矩阵(数组)的方式
array = np.array([[1,2,3],
                   [2,3,4]])

# 输出矩阵
print(array)
# 输出矩阵的维度
print("number of dim:", array.ndim)
# 输出矩阵的形状:几行几列
print("shape:", array.shape)
# 输出矩阵的尺寸:总共多少个元素
print("size:", array.size)


P2-numpy 的创建 array

import numpy as np

# np.array 创建矩阵,    dtype参数指定类型,默认64位
a = np.array([2,23,4], dtype=int)
print(a,"\n", a.dtype)
print("-"*50)

# np.zeros((3, 4))定义三行四列的零矩阵,(3, 4)是shape参数的值
# 同理 np.ones 创建元素全部为1的矩阵, np.empty 创建空矩阵,元素近似为0
b = np.zeros((3, 4))
print(b)
print("-"*50)

# np.arange(10, 20, 2) 得到一个数列:10,12,14,16,18.
# 步长为2,起始值为10,终点为19,区间左闭右开
c = np.arange(10, 20, 2)
# c=np.arange(12) 起点从零开始,终点11,步长为1
print(c)
print("-"*50)

# reshape方法可以改变矩阵形状
d = c=np.arange(12).reshape(3,4)
print(d)
print("-"*50)

# np.linspace(1,10,5) 生成一条 区间(1,10)左闭右闭 的线段
# 区间(1,10)左闭右闭, 5:取五个数
# np.linspace 同样可以调用 reshape 方法
e = np.linspace(1,10,6).reshape((2, 3))
print(e)


P3-numpy中的基础运算

import numpy as np
a = np.array([10,20,30,40])
b = np.arange(4)
g = b.reshape(2, 2)
h = np.array([[1,1],
              [0,1]])

#  矩阵减法
print(a,b)
c = a-b
print(c)
print("*"*50)
# 矩阵加法
d = a+b
print(d)
print("*"*50)
# 乘积/次方
e = b**2
print(e)
print("*"*50)
# 调用函数  np.sin/cos/tan
f = 10*np.sin(a)
print(f)
print("*"*50)
# 判断array中哪些元素大于小于等于某个数
print(b)
print(b<3)
print("*"*50)

# np的乘法

# i = g*h 逐个相乘:就是两个矩阵中相同位置的元素相乘
i = g*h
# i_dot = np.dot(g,h) 矩阵乘法   i_dot_2 = g.dot(h)   两者形式不同,都是矩阵乘法
i_dot = np.dot(g,h)
i_dot_2 = g.dot(h)
print(i)
print(i_dot)
print(i_dot_2)
print("*"*50)

# np.random.random能够生成 传入参数 的 元素在0-1之间的随机矩阵
k = np.random.random((2,4))
print(k)
# np.sum(k) 矩阵元素求和
print(np.sum(k))
# np.min(k,axis=1)  求矩阵中最小值,axis=1 表示在每一行中寻找,返回每一行中的最小值
print(np.min(k,axis=1))
# axis=0,在每一列中寻找
print(np.max(k,axis=0))
print("*"*50)


P4-numpy的基础运算2

import numpy as np

A = np.arange(2,14).reshape((3,4))
print(A)
print("-"*50)

# np.argmin(A) 求A中最小值元素的索引  np.argmax(A) 最大值
print(np.argmin(A))
print(np.argmax(A))
print("-"*50)

# np.mean(A)    A.mean()    np.average(A)  三种方法都是求矩阵所有元素的平均值
print(np.mean(A))
print(A.mean())
print(np.average(A))
print("-"*50)

# np.median(A) 求矩阵A元素的中位数
print(np.median(A))
# np.cumsum(A) 对矩阵A中的元素进行累加
print(np.cumsum(A))
# np.diff(A) 两两元素之间进行累差,后项减前项
print(np.diff(A))
print("-"*50)

# np.nonzero(A) 求矩阵A中的哪些元素非零,输出形式是两个列表,前列表代表行号,后列表代表列号
print(np.nonzero(A))
# np.sort(A) 对矩阵A中元素逐行升序排序
print(np.sort(A))
print("-"*50)

# np.transpose(A)   A.T     对矩阵A进行转置
print(np.transpose(A))
print(A.T)
print("-"*50)
# (A.T).dot(A)      A.T 与 A 进行矩阵乘法
print((A.T).dot(A))
print("-"*50)
# np.clip(A,5,9)  对矩阵A中,小于5的数全部修改为5,大于9的数修改为9,并输出矩阵
print(np.clip(A,5,9))
print("-"*50)
print("-"*50)


print(A)
# np.mean(A,axis=0)     axis=0 对每一列求平均值
print(np.mean(A,axis=0))


P5-numpy的索引

import numpy as np

# # np.arange  矩阵支持索引
# A = np.arange(3,15)
# print(A)
# print(A[3])


# A = np.arange(3,15).reshape((3,4))
# print(A)
# print(A[1][1])
# print(A[1,1])
# print(A[2,:])      # 与列表切片方法类似


# # 矩阵的 for循环 默认以 行 作为循环单位
# A = np.arange(3,15).reshape((3,4))
# print(A)
#
# for row in A:
#     print(row)
# # 以 列 作为循环单位的实现方法:矩阵转置
# for column in A.T:
#     print(column)


# 以 元素 作为循环单位
A = np.arange(3,15).reshape(3,4)
print(A)
# A.flatten() 可以把矩阵压扁成一行
print(A.flatten())
# A.flat 循环迭代器:以元素为单位
for item in A.flat:
    print(item)


P6-numpy的array合并

import numpy as np

# A = np.array([1,1,1])
# B = np.array([2,2,2])
#
# # 上下合并矩阵
# print(np.vstack((A,B)))     # vertical stack
# C = np.vstack((A,B))
# # 左右合并矩阵
# D = np.hstack((A,B))        # horizontal stack
# print(A.shape,C.shape)
# print(A.shape,D.shape)
#
# # 在横向(行的方向)增加一个维度
# print(A[np.newaxis,:])
# print(A[np.newaxis,:].shape)
#
# # 在纵向(列的方向)增加一个维度
# print(A[:,np.newaxis])
# print(A[:,np.newaxis].shape)

A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]

# C = np.vstack((A,B))
# D = np.hstack((A,B))
# print(D)
# print(A.shape,D.shape)

# 合并多个矩阵
# 上下合并
C = np.concatenate((A,B,B,A),axis=0)
# 左右合并
D = np.concatenate((A,B,B,A),axis=1)
print(C)
print(D)


P7-numpy的array分割

import numpy as np

A = np.arange(12).reshape(3,4)
print(A)

# 只能实现相等的分割
# 对A的列进行操作,将矩阵分成两块
print(np.split(A,2,axis=1))
# 对A的行进行操作,将矩阵分成三块
print(np.split(A,3,axis=0))

# 实现矩阵的不等分割
print(np.array_split(A,3,axis=1))
print((np.vsplit(A,3)))
print((np.hsplit(A,2)))


P8-numpy的copy&deep copy

import numpy as np

# array的赋值实际是新建一个引用,修改原来的array就是修改新的array(python的赋值原理)
a = np.arange(4)
print(a)
b = a
a[0] = 11
a[1:3] = [22,33]    # 同时修改两个 item  (多个)
print(b)

c = a.copy()   # deep copy  赋值但是不关联(deep copy)
print(id(c),id(a),id(b))


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值