【发布时间】:2015-07-22 16:02:55
【问题描述】:
所以我有一个包含数据的矩阵和一个包含我应该从矩阵中提取哪些数据的信息的向量。真正的矩阵要长得多,但下面是一个简短的版本,只是为了说明我的意思。
Data matrix = array([[1 2 3],[0 3 5],[1 4 4]])
Info vector = array([[1], [0], [2]])
Answer matrix = array([[2 (the second element)], [0(the first element)], 4(the third element)]])
简单的for循环:
length_data = data.shapes[0]
for i in xrange(length_data)
answer[i] = data[info[i],i]
我知道如何使用简单的 for 循环来完成此操作,但如何使用矢量化来完成此操作,而不使用任何循环?
谢谢!
对问题的轻微补充:如果我希望答案如下所示怎么办
Answer matrix = array([[0 2 0], [0 0 0], [0 0 4]])
【问题讨论】:
-
您的矩阵实际上是什么样的?它是自定义数据结构,还是只是列表列表/二维数组?
-
如果它是一个列表,你可以这样做
list.indexof(item) -
您确定您的语言正确吗?
[1 2 3; 0 3 5; 1 4 4]应该是什么?还是[1; 0; 2]? -
@mystery578.你需要添加你的 simple for 循环 因为你的输入数据看起来不像 python 但如果它是你听起来像你有 numpy 数组这是一个与常规 python 列表有很大不同
-
@mystery578,你有 numpy 数组,你应该用 numpy 标记问题,因为这里的所有答案都意味着你不再有 numpy 数组。更糟糕的是,它们会导致错误,
__getitem__->descriptor '__getitem__' requires a 'list' object but received a 'numpy.ndarray'
标签: python numpy matrix vectorization