python - 算法从 Nx3 矩阵中获取一些特定数据的任何想法
问题描述
问题是:我不知道如何继续实现下面的模式。(嗯,我尝试了很多方法,但没有成功)
我有一个matrix
Nx3 (RowxCol):[[1,2,3], [4,5,6], [7,8,9]]
视觉上应该是这样的:
|01, 02, 03| ----- > |M(00), M(01), M(02)|
|04, 05, 06| ----- > |M(10), M(11), M(12)|
|07, 08, 09| ----- > |M(10), M(21), M(22)|
我需要按照这种模式检索一些数据以获得matrix
(2N)xN: [[02, 04, 07], [03, 04, 07], [01, 05, 07], [01, 06, 07], [01, 04, 08], [01, 04, 09]]
Visually :
|02, 04, 07| ----- > Second, First, First (of each row)
|03, 04, 07| ----- > Third, First, First
|01, 05, 07| ----- > First, Second, First
|01, 06, 07| ----- > First, Third, First
|01, 04, 08| ----- > First, First, Second
|01, 04, 09| ----- > First, First, Third
这个想法是从每行中获取第二个和第三个值,并用每行中的第一个值完成该行中的其余空间。我说Nx3
因为N
可以增加,但是我是如何被 3x3 卡住的,例如我用过的。
解决方案
我认为解决方案相当简单,如果您可以循环一次N
:
import numpy as np
N=4 # set some arbitrary value for the dimension
M=np.reshape(np.arange(N*3), (N,3)) # create a dummy matrix
out=np.zeros((2*N,N)) # output matrix with size 2N x N, all zeros
out[:,:]=M[:,0] # fill each column of the matrix with the first entry of M's rows
for i in range(N):
out[2*i,i]=M[i,1] # fill in the second value of M at position (2i, i)
out[2*i+1,i]=M[i,2] # fill in the third value of M at position (2i+1, i)
推荐阅读
- sql - 更新表无法修改映射到非键保留 tqbles 的列
- elasticsearch - _msearch 不返回任何内容
- java - Android Gson Retrofit 预期为 BEGIN_OBJECT,但为 NUMBER
- c++ - 我们应该在 C++17 及更高版本中使用临时的生命周期延长吗?
- c++ - 程序未按预期执行但没有编译错误
- android - 使用哪种架构来检索数据库更新
- sql - 当合并空列不合并时,刚刚插入
- c - 返回 int 数组的 Printf 函数
- java - RequestParam = false 不返回所有内容
- spring - 为什么 Spring boot AspectJ 有时只错过触发