在线音乐网站开发php,简网app工场手机下载,怎么运行自己做的网站,网站开发所需要的技术作者将自己学习numpy的代码笔记分享一下#xff0c;想学哪一部分就把哪一部分的注释去掉即可#xff0c;便于初学者学习和复习#xff1a;
import numpy as np主要是根据数据构建算法可能用到的矩阵#xff0c;对于矩阵可以进行相应的处理变换#将一个列表输出成一维向量笔记分享一下想学哪一部分就把哪一部分的注释去掉即可便于初学者学习和复习
import numpy as np主要是根据数据构建算法可能用到的矩阵对于矩阵可以进行相应的处理变换#将一个列表输出成一维向量列表的列表输出为矩阵
# The numpy.array() 可以将一个列表输出成一维向量 列表的列表输出为矩阵即上面说的ndarray
vector np.array([5, 10, 15, 20]) # 一维向量(当然也是矩阵)
# 矩阵矩阵中的列表值必须为相同类型只要有字符就全变为字符如果有True就定义为1
matrix np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45],[33,22,33]])
# print(vector)
# print(matrix)
# #
# print(vector.shape) #(4,)
# # .shape输出矩阵维度
# print(matrix.shape)#(4, 3)表示四行三列# print(matrix[:,1])#取所有行的第2列
#
# vec_equal_to_ten(vector10)
#
# #找到矩阵中有没有值等于一个数返回的是含有布尔值的列表
# print(vec_equal_to_ten)
#
# #输入有10的那一行在一维向量中每一个数都是行
# #这个可以检查所有数中有没有该值没有的话就返回[]比True和False快速
# print(vector[vec_equal_to_ten])
#
# #检查矩阵中所有行的第二列是否有等于25的如果有就返回该行
# matrix_second_col_25matrix[:,1]25
#
# print(matrix[matrix_second_col_25])
## #与或表达式
# vec_equal_to_ten_or_five(vector10)|(vector5)
# print(vector[vec_equal_to_ten_or_five])# #改变所有值的操作不改变原来矩阵的类型
# vecvector.astype(str)#把矩阵中所有元素变成字符串但是不改变矩阵结构
# print(vec)
# print(vector)# #生成0~14组成的向量
# mnp.arange(15)
# print(m)
# print(m.reshape(3,5))#一共15个向量将向量变成3*5的矩阵
#
# # #形状元素个数数据类型名称维度一般都是二维矩阵
# print(m.shape,m.size,m.dtype.name,m.ndim)# # 注意zeros()中需是一个元祖
# print(np.zeros((3, 4))) # 默认float类型
# # 三维矩阵每个元素都是整数1,两三行四列高维不知道怎么说
# print(np.ones((2, 3, 4), dtypenp.int32))
#
# print(np.arange(10, 30, 5)) # 10开始30结束每5个取一个值
#
默认从0到1产生随机数产生二行三列的数组
# print(np.random.random((2,3)))
##返回一组具有标准正态分布的样本
# print(np.random.randn(2,4))# #这个pi必须要说明是从numpy引入的否则当作变量处理
# from numpy import pi
# # 起始0到2*pi平均取100个值
# print(np.linspace(0, 2 * pi, 10))#是平均取值# a np.array([20,30,40,50])
# b np.arange(4)
# # b**2表示矩阵所有元素平方
# print(b**2)
# # a35表示对矩阵所有元素判断每个元素都返回布尔值
# print(a35)
#
# A*B表示AB矩阵的元素本身相乘
# 而A.dot(B)/np.dot(A,B)是AB两个矩阵做矩阵乘法运算
# print(b)
# # 求指数幂
# print(np.exp(b))
# # 开方
# print(np.sqrt(b))# a np.floor(10*np.random.random((3,4)))# floor函数表示向下取整
# print(a)
# print(--------------------------------)
# # ravel函数把矩阵拉成一个向量
# print(a.ravel())
# print(--------------------------------)
# #注意a.shape()是永久改变数组结构而reshape函数不改变
# a.shape (6,2)
# # a.reshape(3,-1) 当行或列确定后另一个可以置为-1它自己会算出正确结果
# print(a)
# print(--------------------------------)
# # 转置
# print(a.T)# a np.floor(10 * np.random.random((2, 2)))
# b np.floor(10 * np.random.random((2, 2)))
# print(a)
# print(--------------------)
# print(b)
# print(--------------------)
# # 横着拼接
# print(np.hstack((a, b)))
# print(--------------------)
# # 纵着拼接
# print(np.vstack((a, b)))np.hsplit(a,(3,4)) 是一个 numpy 函数它用于沿着水平轴列将数组 a 分割成多个子数组。在这种情况下它将在第3列和第4列之后分割数组 a。
这意味着它将返回三个子数组第一个包含前三列第二个包含第四列第三个包含剩余的列1。
# a np.floor(10*np.random.random((2,12)))
# print(a)
# print(--------------)
# # 按行切分 ,切成3份
# print(np.hsplit(a,3))
# print(--------------)
# # 指定位置切分
# print(np.hsplit(a,(3,4)))
# b a.T
# print(b)
# print(--------------)
# # 按列切vsplit是横着切hsplit是竖着切
# cnp.vsplit(b,3)
# print(c)ab地址赋值深复制
ab.view()只是指向不同但是值居然是共用的
ab.copy()指向不一样值也不一样推荐使用这个copy()
# a np.arange(12)
# # a和b指向同一个东西只是名字不同
# b a
# print(b is a)
# print(b.shape)
# print(a.shape)
# print(id(a))# 对应内存上唯一的一个区域
# print(id(b))提取每列最大最小值其实也可以提取每行的最大最小值
# # 这些元素是从0到19的整数的正弦值其实就是对于矩阵的运算几乎都是对矩阵元素进行的变换
# # 所以就是将这个矩阵中的元素求sin值
# data np.sin(np.arange(20).reshape(5,4))
# print(data)
# # 使用 argmax 函数沿着第0轴即行找到每一列的最大值的位置即索引。这些索引存储在名为 ind 的数组中。
# ind data.argmax(axis0)
# print(ind) #该位置索引从0开始
# # 通过ind 取出每列对应的最大值data.shape在本例中是(5,4)所以data.shape[1]就是4
# data_max data[ind, range(data.shape[1])]
# print(data_max)
# # 既然0轴是挑选每一列的最大值那么1轴我猜就是挑选每一行的最大值甚至我猜有argmin函数
# inr data.argmax(axis1)
# print(inr)
# data_max1 data[range(data.shape[0]),inr]
# print(data_max1)
# # 列的最大值索引就在行的位置因为列已经固定了索引变化的是行
# # 行的最大值索引就是列的位置数组扩展(其实就是生成一个新的矩阵矩阵中的元素就是该数组的复制粘贴)matlab中也有类似的操作
# a np.arange(0, 40, 10)
# print(a)
# # 扩展a扩展两行三列
# b np.tile(a, (2,3))
# print(b)每行排序也可以返回对应关系的索引
# a np.array([[4, 3, 5,],
# [1, 2, 1]])
# print(a)
# print(--------------------)
# # 按行排序(每行从小到大排)
# b np.sort(a,axis1)# 其实本质上来说axis横轴纵轴就是指示了处理数据的方向
# #因为处理数据的方向是纵轴方向所以在纵轴上点一个就是处理一行再往下点一个就是继续处理下一行
# print(b)
# print(--------------------)
# print(a) #验证a矩阵是否改变结果是不变
# print(--------------------)
# a.sort(axis1) #对a矩阵每行从小到大的排序将永久赋值到a
# print(a)
# print(--------------------)
# a np.array([4, 3, 1, 2])
# # 返回从小到大的数据对应的索引
# j np.argsort(a)
# print(j)
# print(--------------------)
# print(a[j])# 通过索引取出值