python - python中numpy数组的计算
问题描述
有一个numpy的计算过程如下,已经正确批了,但是我对这个过程不是很清楚,想寻求帮助。步骤如下:
- 通过 unstack 创建的user_item_train矩阵如下:
- 有一个测试数据索引列表为 test_idx,如下所示:
- 下面的代码:从训练数据集中查找 test_idx 中的 user_id,并返回布尔值
- 通过 np.linalg.svd(user_item_train,full_matrices=False) 生成的u_train 数据集如下:
- 我不明白这一步:
我可以请你帮忙解释一下吗?
谢谢。
解决方案
u_train
是一个二维数组。在 NumPy 中,您可以将列表用作切片。举个例子最容易想象:假设我有一个 4x4 数组,名为arr
. 然后,
arr[3, 1]
给我第 3 行第 1 列的值(请记住,我们从 0 开始计数)。arr[[1, 3], [0, 2]]
给我一个具有以下原始索引的 2x1 数组:即第 1 行和第 3 行,第 0 列和第 2 列。
+--------+--------+
| (1, 0) | (1, 2) |
+--------+--------+
| (3, 0) | (3, 2) |
+--------+--------+
arr[[0, 3], :]
给我第 0 行和第 3 行,所有列,因为:
这意味着该轴上的所有内容:
+--------+--------+--------+--------+
| (0, 0) | (0, 1) | (0, 2) | (0, 3) |
+--------+--------+--------+--------+
| (3, 0) | (3, 1) | (3, 2) | (3, 3) |
+--------+--------+--------+--------+
arr[3]
等同于arr[3, :]
,这只是语法糖。- 对于使用布尔列表作为索引,
True
列表中的 a 表示包含与其相同索引的行,反之亦然。例如,arr[:, [True, True, False, False]]
等价于arr[:, [0, 1]]
。请注意,也许很明显,布尔列表的长度必须与维度相同,因此arr[:, [True, False, True]]
会引发IndexError
.
推荐阅读
- powerbi - 使用 Power Query 编辑器加载表数据后出现超时错误。我该如何进一步进行?
- javascript - 为什么我在使用这个关键字时变得不确定
- java - 有没有办法使用java从本地系统上传文件到EFS?
- c# - .Net Core webApi 在运行时将属性添加到传入的 Dto
- git - 如何在格式化的 git 提交日期输出上将时区更改为本地?
- node.js - FLUTTER - Cloud Functions Firestore 查询在我使用数组时返回 0 个结果,但在我使用字符串时返回一些结果
- javascript - Angular 项目:Hibernate 不会自动创建表
- python-3.x - 可以使用 tracemalloc 来分析用 python 2.x 编写的应用程序吗?
- regex - 如何在 grep 中为 MINGW64 使用方括号?
- sql-server-2016 - 加入 2 个表,匹配两个表中的 2 列