- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在从 scipy 稀疏矩阵转换为密集矩阵,并使用 += 运算符将其添加到 ndarray 中,但出现广播错误。 ndarray 的形状为 (M,),而密集矩阵的形状为 (M,1)。当我尝试将 numpy.matrix 转换为 ndarray 时,形状变为 (1,M)。我也尝试在转换后使用 reshape(M,),形状变为 (M,M)。谁能解释一下我哪里搞砸了。
M = 100
N = 1000
K = 4
a= np.zeros((M,K))
b = sp.csr_matrix(np.ones((N,1)))
d = sp.csr_matrix(np.ones((M,N)))
c = np.ones(())
for k in range(K):
a[:,k] += d.dot(b).todense()
P.S:我是 python 和 stackoverflow 的新手。如果这是一个错误的问题或者这个问题之前已经被问过(我找不到),我们深表歉意
最佳答案
给 future 的 google 员工的旁注,OP 的代码导入了以下包:
> import numpy as np
> import scipy.sparse as sp
不管怎样,让我们从我们的解释开始吧。
您可以使用以下方法检查您的矩阵大小:
> np.shape(your_matrix_here) #equals to MATLAB: > size(your_matrix_here)
当你调用 todense() 时,你得到了:
matrix([[ 1000.], #shape: (1, 100)
[ 1000.],
[ 1000.],
...
而 a[:,1] 看起来像这样:
array([ 0., 0., ... , 0., 0.]) #shape: (100,)
因此您可能想使用 transpose() 转置矩阵。
但是转置矩阵返回包含矩阵的矩阵:
matrix([[ 1000., 1000., ... , 1000., 1000.]]) #shape: (1, 100)
并且由于某些原因 d.dot(b).todense().transpose()[0]
没有返回矩阵的第一个元素:
matrix([[ 1000., 1000., ... , 1000., 1000.]]) #still the same!
这可以通过以下方式解决:
> np.array(d.dot(b).todense().transpose())[0]
因此返回:
array([ 1000., 1000., ... 1000., 1000.])
现在他们两个得到了相同的形状,允许他们进行矩阵运算:
> np.shape(np.array(d.dot(b).todense().transpose())[0]) #(100,)
> np.shape(a[:,1]) #(100,)
总之,您要更改此行:
a[:,k] += d.dot(b).todense()
到:
a[:,k] += np.array(d.dot(b).todense().transpose())[0]
关于python - 添加 ndarray 和在 python 中转换为密集的稀疏矩阵时出现广播错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885650/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5 个月前关
我正在尝试使用摄像机跟踪多个人。我不想使用 blob 分割技术。我想做什么: 执行背景减法以获得隔离人们运动的掩码。 在这些区域执行基于网格的光流 -我最好的选择是什么? 我正在努力实现。我已经尝试过
OpenCV 有 very good documentation on generating SIFT descriptors ,但这是“弱 SIFT”的一个版本,其中关键点由原始 Lowe algo
我有一个 cholmod_dense 数据结构: cholmod_dense* ex = cholmod_l_solve(CHOLMOD_A, L, B, &com); 我想提取这些值并将它们复制到另
这是先前发布的关于在 python 中使用 OpenCVs 密集筛选实现的问题的后续问题 (OpenCV-Python dense SIFT)。 使用建议的代码进行密集筛选 dense=cv2
我是计算机视觉的新手。我正在学习 Dense SIFT 和 HOG。对于密集 SIFT,算法只是将每个点视为一个有趣的点并计算其梯度向量。 HOG 是另一种用梯度向量描述图像的方法。 我认为 Dens
我正在尝试使用 openCV-python 2.4 计算密集 SIFT import cv2 def gen_sift_features(gray, step_size, gamma): de
我正在使用 OpenCV 实现词袋图像分类器。最初我测试了在 SURF 关键点中提取的 SURF 描述符。我听说 Dense SIFT(或 PHOW)描述符更适合我的目的,所以我也尝试了它们。 令我惊
我有一个密集的 Ax=b 类型的方程组要在我的 C++ 程序中求解,我希望在 boost 中使用 UBLAS 来实现该解决方案。在其他一些问题中,我发现人们正在使用扩展 LAPACK,但不幸的是,它似
我目前有一台配备 Opteron 275 (2.2Ghz)(双核 CPU)和 4GB RAM 以及速度非常快的硬盘的机器。我发现即使是使用 C++ 模板(想想 boost 等)编译一些简单的项目时,我
我是一名优秀的程序员,十分优秀!