python - 如何在 Python 中将 3D numpy 数组转换为 3D 稀疏矩阵?
问题描述
我有一个 3D NumPy 数组,我想在 Python 中将其转换为 3D 稀疏矩阵。我查找了scipy.sparse
模块,只找到了 2D 稀疏矩阵实现。例如,
输入:
array([[[0],
[0],
[1],
[0],
[1],
[0],
[0]],
[[1],
[0],
[1],
[0],
[0],
[0],
[0]]])
输出:
(0,0,2) 1
(0,0,4) 1
(0,1,0) 1
(0,1,2) 1
怎么做?
解决方案
在 n 维中,您可以找到以下索引:
ind=np.array(np.where(a!=0)).T
#array([[0, 2, 0],
# [0, 4, 0],
# [1, 0, 0],
# [1, 2, 0]], dtype=int64)
以及相应的值,例如:
ravel_ind=np.apply_along_axis(ravel_multi_index,1,ind,a.shape)
values=np.take(a,ravel_ind)
# array([1, 1, 1, 1])
推荐阅读
- python - 使用 setup.cfg 构建 wheel 包后如何清理 xxx.egg-info 并构建文件夹
- typescript - 导出的变量不能用符号命名错误
- python - 数据集 tf.data.experimental.sample_from_datasets 的不同权重
- java - Is there an idiom/pattern to pass a collection without holding a reference to it or preventing further use?
- pytorch - PyTorch 中的偏导数
- android - 为什么我的模拟器中的应用程序没有启动?
- java - 为 API 29 编译时不出现 WebView
- python - 使用 url 作为文件名
- c++ - SoloLearn Cpp 丛林露营挑战
- java - 线程“主”java.lang.NumberFormatException 中的异常:空字符串。我没有找到错误