【发布时间】:2014-03-03 21:18:27
【问题描述】:
例如,给定:
import numpy as np
data = np.array(
[[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 0, 1],
[0, 1, 1],
[0, 0, 0]])
我想得到一个 3 维数组,看起来像:
result = array([[[ 2., 0.],
[ 0., 2.]],
[[ 0., 2.],
[ 0., 0.]]])
一种方法是:
for row in data
newArray[ row[0] ][ row[1] ][ row[2] ] += 1
我想要做的是:
for i in dimension1
for j in dimension2
for k in dimension3
result[i,j,k] = (data[data[data[:,0]==i, 1]==j, 2]==k).sum()
这似乎不起作用,我想通过坚持我的实现而不是一开始提到的实现(或使用任何额外的导入,例如计数器)来达到预期的结果。
谢谢。
【问题讨论】:
-
我相信你使用的是 numpy。
-
是的,没错,会修复它。无论如何,有什么想法吗?
-
我认为您的第一种方法更容易阅读,当然也更快。
-
@tobias_k 我知道!我只是想知道为什么第二种方法不起作用:)
-
请下次发布语法正确的代码