Python Numpy:是否有方法为Numpy数组中的某个位置提供*名称*
我有一个3x3numpy阵列:Python Numpy:是否有方法为Numpy数组中的某个位置提供*名称*,python,arrays,numpy,Python,Arrays,Numpy,我有一个3x3numpy阵列: X = np.array([[ 0., 2., 0.], [ 0., 0., 0.], [ 4., 22., 0.]]) 其中,数组X中的每个位置对应于以下变量之间的某种关系: [ a & a, a & b, a & c] [ b & a, b & b, b & c] [ c & a, c & b, c &
X = np.array([[ 0., 2., 0.],
[ 0., 0., 0.],
[ 4., 22., 0.]])
其中,数组X中的每个位置对应于以下变量之间的某种关系:
[ a & a, a & b, a & c]
[ b & a, b & b, b & c]
[ c & a, c & b, c & c]
因此,在示例数组X中,数字2对应于描述变量a和b之间关系的数据
现在,假设我想在X上运行一个条件,如下所示:
X>3,生成以下内容:
array([[False, False, False],
[False, False, False],
[ True, True, False]])
然后,我如何确定a、b和c变量范围中的真值对应哪些变量?我们知道这是c&a和c&b,但我该如何提取这些信息呢
我想也许有一种方法可以在Numpy数组中为固定位置分配名称
我可以做我想做的事情如下:
y = np.array([[ 'a', 'a', 'a'],
[ 'b', 'b', 'b'],
[ 'c', 'c', 'c']])
z = np.array([[ 'a', 'b', 'c'],
[ 'a', 'b', 'c'],
[ 'a', 'b', 'c']])
y[x>3]
array(['c', 'c'], dtype='<U1')
y=np.array([['a','a','a'],
['b','b','b'],
['c','c','c']]
z=np.array([['a','b','c'],
[‘a’、‘b’、‘c’],
[‘a’、‘b’、‘c’]]
y[x>3]
数组(['c',c',dtype='另一种方法是只使用一个索引,然后用np索引。其中
:
labels = np.array(['a','b','c'])
idx = np.array(np.where(X>3)).T
labels[idx]
输出:
array([['c', 'a'],
['c', 'b']], dtype='<U1')
数组([['c','a'],
['c','b']],dtype='你试过了吗?我知道我可以在pandas中完成这项工作,但我的实际数据集r有几个2500 x 2500数组,所以有600万条记录。考虑到涉及的数据大小和运行时间,pandas可能不是完成这项工作的最佳地点。我只试过使用10k x 10k的pandas,很好……通过numpy生成大小为2秒的随机数据,pandas takes~5毫秒将其转换为数据帧Pandas基本上是一个奇特的numpy包装器。Pandas在numpy上的开销可以忽略不计。
array([['c', 'a'],
['c', 'b']], dtype='<U1')