簡體   English   中英

為什么我不能手動復制 nd 數組?

[英]Why can I not reproduce a nd array manually?

我對這些數據結構感到困惑。

從 GIS 系統中,我使用 function 來提取元數據(8 個不同的字段)

myList = FeatureClassToNumPyArray(...)
myList = [('a', 'b', 'c'...) ('aa', 'bb', 'cc'...) ..]    # 8 fields
print (type(myList ))
print (myList.shape)
print (myList.size)

這會產生:

<class 'numpy.ndarray'>
(1, 9893)
9893

# I was expecting to get (9893 rows x 8 cols), as in (8,9893)   
# or (9893, 8), but anyway, let's not worry about that right now. 

所以我試試這個:

>>> source = [('a', 'b', 'c') ('aa', 'bb', 'cc')]

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object is not callable

但是加上一個逗號分隔符,這很好......但現在它是一個列表。

>>> source = [('a', 'b', 'c'), ('aa', 'bb', 'cc')]
>>> type(source)
<class 'list'>

所以,這個神奇的 GIS function 可以生成一個被接受為 numpy 數據數組的數據結構,但如果我嘗試手動創建它,這是不可能的。

我錯過了什么?

不知道該怎么做,但是 juanpa.arrivillaga 的評論應該被標記為答案。

同樣,為什么您希望 print(something) 生成一個有效的 python 源代碼的字符串來生成 object? 那是你的基本假設是錯誤的。 這就是你所缺少的。 print(repr(something)) 通常會讓你更接近一些東西,但它永遠不能保證是有效的源代碼。 同樣,它可能會返回一個帶有一些結構化 dtype 的 numpy.ndarray。 什么是 myList.dtype? 編輯:這是一個非常基本的例子,something = object(); print(something) 現在嘗試從字符串表示中重現它......沒有理由期望能夠做到。 – juanpa.arrivillaga 5 月 13 日 21:18

我的問題源於對 dataframe 是什么以及它如何工作的根本誤解。 我花了一些時間來解決它。

用我的話來說,它是一個 object,需要通過各種工具/功能進行操作……它不僅僅是一個“字符串”矩陣。

暫無
暫無

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

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