Python numpy 2D阵列,具有非整数索引



背景:我正在尝试构建亲和力矩阵以进食Sklearn光谱群集。

在此问题中,我遇到了一个问题,其中numpy数组索引为基于0的整数,对于我的应用程序,我使用某种类型的应用程序ID(基于字符串的,一个随机示例," ABC123")。我想创建一个由我拥有的所有数据点索引的2D Numpy阵列。例如,给定两个点points = ["abc123", "xyz456"],我将拥有2D numpy数组的行索引和列索引为points。这样我就可以轻松地指定两个点之间的距离,与 arr["abc123"]["xyz456"] = dist

相似

我该如何实现?谢谢。

pandas可以做到这一点,还有更多...

In [41]: import pandas as pd
In [122]: a = np.random.randint(100, size=(5, 3))
In [123]: a
Out[123]:
array([[53,  7, 34],
       [54, 56, 85],
       [ 0, 11, 83],
       [63, 28, 88],
       [65, 19, 44]])
In [124]: df = pd.DataFrame(a, index=list('abcde'), columns=list('xyz'))
In [125]: df
Out[125]:
    x   y   z
a  53   7  34
b  54  56  85
c   0  11  83
d  63  28  88
e  65  19  44
In [126]: df.loc[['a','d'], ['x','y']]
Out[126]:
    x   y
a  53   7
d  63  28

我们总是可以使用.values访问者从数据框中获得一个numpy数组:

In [127]: df.values
Out[127]:
array([[53,  7, 34],
       [54, 56, 85],
       [ 0, 11, 83],
       [63, 28, 88],
       [65, 19, 44]])
In [128]: df.loc[['a','d'], ['x','y']].values
Out[128]:
array([[53,  7],
       [63, 28]])

您可以使用键的字典,但是如果您仍然需要numpy数组,则可以使用dtype播放。从文档:

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
>>> x[1]
('John', [6.0, 7.0])
>>> x[1]['grades']
array([ 6.,  7.])

相关内容

  • 没有找到相关文章

最新更新