簡體   English   中英

具有非整數索引的Python Numpy 2d數組

[英]Python Numpy 2d array with non-integer index

背景:我正在嘗試建立親和度矩陣以饋入sklearn光譜聚類。

在此問題中,我遇到了以下問題:numpy數組索引是基於0的整數,而對於我的應用程序,我正在使用某種特定於應用程序的ID(基於字符串,隨機示例為“ abc123”)。 我想創建一個由我擁有的所有數據點索引的2d numpy數組。 例如,給定兩個點points = ["abc123", "xyz456"] ,我將擁有2d numpy數組,其行索引和列索引為points 這樣我可以通過類似於arr["abc123"]["xyz456"] = dist點輕松指定兩點之間的距離

我該如何實現? 謝謝。

熊貓可以做到這一點,還有更多……

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訪問器從DataFrame中獲得一個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.])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM