numpy矩阵和向量的保存与加载,以及使用保存的向量进行相似度计算

1 篇文章 0 订阅
1 篇文章 0 订阅

numpy矩阵和向量的保存与加载,以及使用保存的向量进行相似度计算

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
使用 arange创建array数组
a = np.arange(0, 5)
print(a)  # [0 1 2 3 4]
b = np.arange(5, 15)
print(b)  # [ 5  6  7  8  9 10 11 12 13 14]
b = b.reshape(2, 5)
print(b)
"""
[[ 5  6  7  8  9]
 [10 11 12 13 14]]
"""
使用列表创建ndarray
li = [1, 2, 3, 4]
li1 = [[1, 2, 3, 5], [4, 5, 6, 8]]

li_arr = np.array(li)  # # ndarry
print(li_arr)  # [1 2 3 4]

li1_arr = np.array(li1)  # ndarry
print(li1_arr)
"""
[[1 2 3 5]
 [4 5 6 8]]
"""
保存矩阵或者向量
# 保存方式1  保存为npy
np.save('arr.npy', li1_arr)
# 保存方式2 保存为npz  npz可以保存多个矩阵向量 其实就是将多个npy打包对象保存  默认是对象 键从attr1开始
np.savez('arr.npz', li1_arr, li_arr)
加载保存矩阵或者向量
npy_res = np.load('arr.npy')
print(npy_res)
"""
[[1 2 3 5]
 [4 5 6 8]]
"""
使用读取的向量计算相似度
def cosine_similarity_(a, b):
    """
    求余弦相似度或距离
    :param a:
    :param b:
    :return:
    """
    res = cosine_similarity(a.reshape(1, -1), b.reshape(1, -1))
    return res[0][0]


cal_arr = np.asarray([1, 3, 4, 5])
print(cal_arr)  # [1 3 4 5]

"""
计算npy_res中的每个向量与cal_arr的相似度
"""
for arr in npy_res:
    print(cosine_similarity_(arr, cal_arr))  # 0.9865867645279247   0.9787763071201612

"""
计算npz中的arr1对象中的向量与cal_arr的相似度
"""
for arr in npz_res['arr_0']:
    print(arr)
    print(cosine_similarity_(arr, cal_arr))  # 0.9865867645279247   0.9787763071201612
完整代码
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

"""
使用 arange创建array数组
"""
a = np.arange(0, 5)
print(a)  # [0 1 2 3 4]
b = np.arange(5, 15)
print(b)  # [ 5  6  7  8  9 10 11 12 13 14]
b = b.reshape(2, 5)
print(b)
"""
[[ 5  6  7  8  9]
 [10 11 12 13 14]]
"""

"""
使用列表创建ndarray
"""
li = [1, 2, 3, 4]
li1 = [[1, 2, 3, 5], [4, 5, 6, 8]]

li_arr = np.array(li)  # # ndarry
print(li_arr)  # [1 2 3 4]

li1_arr = np.array(li1)  # ndarry
print(li1_arr)
"""
[[1 2 3 5]
 [4 5 6 8]]
"""

# 保存矩阵或者向量
# 保存方式1  保存为npy
np.save('arr.npy', li1_arr)
# 保存方式2 保存为npz  npz可以保存多个矩阵向量 其实就是将多个npy打包对象保存  默认是对象 键从attr1开始
np.savez('arr.npz', li1_arr, li_arr)

# 加载保存的npy文件
npy_res = np.load('arr.npy')
print(npy_res)
"""
[[1 2 3 5]
 [4 5 6 8]]
"""

# 加载保存的npz文件
npz_res = np.load('arr.npz')
npz_res = dict(npz_res)
print(npz_res)
"""
{'arr_0': array([[1, 2, 3, 5],
                [4, 5, 6, 8]]), 
'arr_1': array([1, 2, 3, 4])}
"""

"""
将读取的向量计算相似度
"""


def cosine_similarity_(a, b):
    """
    求余弦相似度或距离
    :param a:
    :param b:
    :return:
    """
    res = cosine_similarity(a.reshape(1, -1), b.reshape(1, -1))
    return res[0][0]


cal_arr = np.asarray([1, 3, 4, 5])
print(cal_arr)  # [1 3 4 5]

"""
计算npy_res中的每个向量与cal_arr的相似度
"""
for arr in npy_res:
    print(cosine_similarity_(arr, cal_arr))  # 0.9865867645279247   0.9787763071201612

"""
计算npz中的arr1对象中的向量与cal_arr的相似度
"""
for arr in npz_res['arr_0']:
    print(arr)
    print(cosine_similarity_(arr, cal_arr))  # 0.9865867645279247   0.9787763071201612

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BRYTLEVSON

打赏的都是天使,创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值