ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

张量以及函数

2021-04-26 20:02:16  阅读:399  来源: 互联网

标签:范数 函数 以及 矩阵 张量 print np x00 numpy


张量

参考文章1
参考文章2

张量模态

在这里插入图片描述
在这里插入图片描述

import numpy as np
import tensorly as tl
X = tl.tensor(np.arange(24).reshape(3, 4, 2))

张量矩阵化(Matricization)输出张量的三个矩阵模态

print(tl.unfold(X, mode=0))  #1模展开
print(tl.unfold(X, mode=1))
print(tl.unfold(X, mode=2))

在这里插入图片描述
同时使用fold函数可以将矩阵转变为对应模态的张量

unfolding = tl.unfold(X, 1)
original_shape = X.shape
tl.fold(unfolding, mode=1, shape=original_sha

Khatri-Rao积(KR积)

在这里插入图片描述
输入:A,B两个矩阵,要求两矩阵列数一致
输出:维度为(A行数B行数)列数的矩阵。
计算过程:A,B矩阵相同列做kron积运算,并逐列摆放组成结果矩阵。
举例:
A=[1 2;3 4],B=[5 6;7 8]
其中AB均为2
2的矩阵,得到(2
2)2=42的矩阵。
第一列:用A的第一列和B的第一列做kron积运算
[15=5
1
7=7
35=15
3
7=21]
第二列:用A的第二列和B的第二列做kron积运算
[26=12
2
8=16
46=24
4
8=32]
最终结果:
[5 12
7 16
15 24
21 32]
Matlab代码:
for k=1:K %K为输入矩阵的列数
C(:,k)=kron(A(:,k),B(:,k));
end

numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)

返回沿数组对角线的和。

np.linalg.norm(求范数)

(1)np.linalg.inv():矩阵求逆
(2)np.linalg.det():矩阵求行列式(标量)

x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)
①x: 表示矩阵(也可以是一维)
②ord:范数类型

向量的范数:
在这里插入图片描述

矩阵的范数:
ord=1:列和的最大值
ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根(matlab在线版,计算ans=ATA,[x,y]=eig(ans),sqrt(y),x是特征向量,y是特征值)
ord=∞:行和的最大值
ord=None:默认情况下,是求整体的矩阵元素平方和,再开根号。(没仔细看,以为默认情况下就是矩阵的二范数,修正一下,默认情况下是求整个矩阵元素平方和再开根号)
③axis:处理类型
axis=1表示按行向量处理,求多个行向量的范数
axis=0表示按列向量处理,求多个列向量的范数
axis=None表示矩阵范数。
④keepding:是否保持矩阵的二维特性
True表示保持矩阵的二维特性,False相反

代码实现

x = np.array([
    [0, 3, 4],
    [1, 6, 4]])
#默认参数ord=None,axis=None,keepdims=False
print "默认参数(矩阵整体元素平方和开根号,不保留矩阵二维特性):",np.linalg.norm(x)
print "矩阵整体元素平方和开根号,保留矩阵二维特性:",np.linalg.norm(x,keepdims=True)
 
print "矩阵每个行向量求向量的2范数:",np.linalg.norm(x,axis=1,keepdims=True)
print "矩阵每个列向量求向量的2范数:",np.linalg.norm(x,axis=0,keepdims=True)
 
print "矩阵1范数:",np.linalg.norm(x,ord=1,keepdims=True)
print "矩阵2范数:",np.linalg.norm(x,ord=2,keepdims=True)
print "矩阵∞范数:",np.linalg.norm(x,ord=np.inf,keepdims=True)
 
print "矩阵每个行向量求向量的1范数:",np.linalg.norm(x,ord=1,axis=1,keepdims=True)

结果:
在这里插入图片描述

RuntimeWarning: invalid value encountered in double_scalars

  • 这是个警告提示(warning),而不是错误(Error)。所以在代码运行时出现这个提示时,代码仍然可以正常运行。但同时因为他不是错误,所以使用try-except是捕获不了异常的。

  • 出现这个提示一般是因为出现了0/0导致的。但是出现分母为0的情况时,没有触发ZeroDivisionError(0除异常),这一点也很意外。

  • 解决方法:使用if-else语句判断当分母为0时重新给id_col赋值。
    下面来简单看看ZeroDivisionError异常和RuntimeWarning警告之间的区别,以及在何种情况下会触发这两类提示。

  • 当分母0的数据类型为内置数据类型时,可以触发ZeroDivisionError异常
    -

  • 当分母0为numpy中的数据类型时,触发RuntimeWarning警告。
    在这里插入图片描述

  • 当内置数据类型和numpy数据类型计算时,其计算结果的类型为numpy中的计算类型。
    在这里插入图片描述

A = np.column_stack((x_vals_column, ones_column))

将2个矩阵按列合并
b = np.row_stack((x_vals_column, ones_column))
将2个矩阵按行合并

flatten()函数用法

flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组。
flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用!。
a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降 。
a.flatten().A:a是个矩阵,降维后还是个矩阵,矩阵.A(等效于矩阵.getA())变成了数组。

>>> a=mat([[1,2,3],[4,5,6]])
>>> a
matrix([[1, 2, 3],
    [4, 5, 6]])
>>> a.flatten()
matrix([[1, 2, 3, 4, 5, 6]])
>>> y=a.flatten().A 
>>> shape(y)
(1L, 6L)
>>> shape(y[0]) 
(6L,)
>>> a.flatten().A[0] 
array([1, 2, 3, 4, 5, 6])
>>>

set() 函数

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
在这里插入图片描述

np.arange函数的使用

返回值: np.arange()函数返回一个序列
参数: 有三种情况
1.只有一个参数的时候,默认从0开始到输入的参数,产生序列,步进为默认的1
2.有两个参数的时候,序列中的元素从第一个参数到第二个参数的区间产生,步进为默认的1
3.有三个参数的时候,序列中的元素从第一个参数到第二个参数的区间产生,步进为第三个参数

numpy.astype() 转换数据类型

arr.astype(int32) 将arr(array数组)转化为int32类型
int32 --> float64 完全ojbk
float64 --> int32 会将小数部分截断
string_ --> float64 如果字符串数组表示的全是数字,也可以用astype转化为数值类型

np.tile

b = tile(a,(m,n)):即是把a数组里面的元素复制n次放进一个数组c中,然后再把数组c复制m次放进一个数组b中

sum(axis=1)

默认axis为None,表示将所有元素的值相加
对于二维数组
axis=1表示按行相加 , axis=0表示按列相加

Numpy tolist() 用法

将矩阵(matrix)和数组(array)转化为列表。
在这里插入图片描述

np.c_的用法

用于连接两个矩阵,np.c 中的c 是 column(列)的缩写,就是按列叠加两个矩阵,就是把两个矩阵左右组合,要求行数相等。
在这里插入图片描述

np.argmax

numpy.argmax(array, axis) 用于返回一个numpy数组中最大值的索引值。当一组中同时出现几个最大值时,返回第一个最大值的索引值。

查准率(Precision) 、召回率(Recall)与F1分数、准确率(Accuracy) | 查准率(Precision) | 查全率(Recall)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC

原文
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

numpy.around()函数

函数原型:numpy.around(a, decimals=0, out=None)
参数解析:
a为输入列表或矩阵;
decimals为n对输入近似后保留小数点后n位,默认为0,若值为-n,则对小数点左边第n位近似;
out为可选参数,一般不用,用于保存近似返回结果。

python csv.reader() 与 pd.read_csv()的区别

csv.reader()

返回一个reader对象,该对象将遍历csv文件中的行。从csv文件中读取的每一行都作为字符串列表返回。

import pandas as pd
 
r = []
with open('train.csv',encoding = 'utf-8') as text:
    row = csv.reader(text, delimiter = ',')
    for r in row:
        print(r)
 
['姓名', '数学', '语文', '英语']
['小王', '54', '76', '87']
['小李', '32', '34', '69']
['小刚', '78', '28', '77']
#输出的是一行行列表

pd.read_csv()

data = pd.read_csv('train.csv',encoding='utf-8')
print(data)
 
   姓名  数学  语文  英语
0  小王  54  76  87
1  小李  32  34  69
2  小刚  78  28  77

sp.linalg.solve_sylvester

在这里插入图片描述
在这里插入图片描述

numpy.diagflat(a,k = 0):

创建一个二维数组,其数组输入作为新输出数组的对角线。
在这里插入图片描述

iloc和loc

loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)
iloc函数:通过行号来取行数据(如取第二行的数据)

pickle.dump

pickle.dumps()将对象obj对象序列化并返回一个byte对象
pickle.dump(obj, file)
pickle.dump() 直接把对象序列化后,将对象obj保存到文件file(这里的file是文件句柄) 中去。

import pickle
dict1 = dict(name='八岐大蛇',
             age=1000,
             sex='男',
             addr='东方',
             enemy=['八神', '草薙京', '神乐千鹤'])
# print(dict1)
data_dumps = pickle.dumps(dict1)
print(data_dumps)#b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x0c\x00\x00\x00\xe5\x85\xab\xe5\xb2\x90\xe5\xa4\xa7\xe8\x9b\x87q\x02X\x03\x00\x00\x00ageq\x03M\xe8\x03X\x03\x00\x00\x00sexq\x04X\x03\x00\x00\x00\xe7\x94\xb7q\x05X\x04\x00\x00\x00addrq\x06X\x06\x00\x00\x00\xe4\xb8\x9c\xe6\x96\xb9q\x07X\x05\x00\x00\x00enemyq\x08]q\t(X\x06\x00\x00\x00\xe5\x85\xab\xe7\xa5\x9eq\nX\t\x00\x00\x00\xe8\x8d\x89\xe8\x96\x99\xe4\xba\xacq\x0bX\x0c\x00\x00\x00\xe7\xa5\x9e\xe4\xb9\x90\xe5\x8d\x83\xe9\xb9\xa4q\x0ceu.'
 
print(type(data_dumps))  # <class 'bytes'>
data=pickle.loads(data_dumps )#从字节对象中读取被封装的对象,并返回
print(data)#{'name': '八岐大蛇', 'age': 1000, 'sex': '男', 'addr': '东方', 'enemy': ['八神', '草薙京', '神乐千鹤']}

numpy.nanstd()函数

计算沿指定轴的标准偏差,而忽略NaN。

标签:范数,函数,以及,矩阵,张量,print,np,x00,numpy
来源: https://blog.csdn.net/qq_37637914/article/details/114897412

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有