簡體   English   中英

numpy:無法建立二維數組的元組

[英]Numpy : can't build a 2-D array of tuples

我對numpy的數組構造函數有問題。 我想用元組初始化一個二維數組,但它不像整數那樣工作:

>>> A = array([[0, 0], [3, 5]])
>>> print(A)
[[0 0]
[3 5]]
>>> A[1, 1] = 7
>>> print(A)
[[0 0]
[3 7]]
>>> A = array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object)
>>> A[1, 1] = (2, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: invalid index
>>> A.shape
(2,)

我真的需要“手工填寫”這些矩陣。 任何想法 ?

您的代碼似乎對我有用(使用顯式的numpy命名空間)。 我正在使用numpy v1.6.1:

In [8]: import numpy as np
In [9]: A = np.array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object)

In [10]: A[1, 1] = (2, 3)

In [11]: A.shape
Out[11]: (2, 2)

In [12]: A
Out[12]: 
array([[(0, 0), (0, 1)],
       [(1, 0), (2, 3)]], dtype=object)

你使用的是什么版本的numpy?

更新這似乎是一個與numpy版本相關的問題,因為我可以使用numpy v1.5.1(在OSX Lion中隨基本python安裝打包的版本)重現OP的錯誤。 我不確定這是不是numpy中的錯誤已修復或實現中的更改。 我會更新到更新版本的numpy或使用這個簡單的解決方法:

>>> A = np.array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object)
>>> A[1][1] = (2,3)
>>> A
array([[(0, 0), (0, 1)], [(1, 0), (2, 3)]], dtype=object)

更新#2這是一個常規修復程序,希望您可以適應:

>>> C = np.empty((2,2),object)
>>> B = [[(0, 0), (0, 1)], [(1, 0), None]]
>>> C[:] = B
>>> C
array([[(0, 0), (0, 1)],
       [(1, 0), None]], dtype=object)
>>> C.shape
(2, 2)
>>> C[1,1] = (2,3)
>>> C
array([[(0, 0), (0, 1)],
       [(1, 0), (2, 3)]], dtype=object)

暫無
暫無

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

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