[英]Change dtype of none square numpy ndarray
a = np.array([1,2,3])
b = np.array([1,2,3,4])
c = np.array([a, b])
np.ndarrays
內部有兩個不同大小的 np.ndarray,當我嘗試調用c.astype(np.int8)
時,我會收到ValueError: setting an array element with a sequence.
. 如何更改dtype
的 dtype?
要在創建期間指定數組的類型,只需使用dtype=xxx
。 前任:
c = np.array([a,b], dtype=object)
如果要將類型從int64
更改為int8
,可以使用:
a.dtype = np.int8
b.dtype = np.int8
或者您可以復制a
和b
:
c = np.array(a, dtype=np.int8)
d = np.array(a, dtype=np.int8)
最后,如果您無權訪問a
和b
,而只能訪問c
,您可以在這里如何做同樣的事情:
for arr in c:
arr.dtype = np.int8
也許你可以做這樣的事情:
arr = list()
for row in range(len(df.desired_column)):
arr.append(np.array(df.desired_column.loc[row], dtype=np.int8))
arr = np.array(arr)
這樣, arr
的每個元素都將是具有所需dtype
的 numpy 數組。 在這個例子中, np.int8
。
假設arr
是 dtype object 的 numpy 數組,其中包含 numpy ZA3CBC3F9D0CE2F2C1554E1B6,您可以:
arr8 = np.array([i.astype('int8') for i in arr])
演示:
arr = array([array([0]), array([0, 1]), array([0, 1, 2]), array([0, 1, 2, 3]),
... array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4, 5]),
... array([0, 1, 2, 3, 4, 5, 6]), array([0, 1, 2, 3, 4, 5, 6, 7])],
... dtype=object)
print(arr)
array([array([0]), array([0, 1]), array([0, 1, 2]), array([0, 1, 2, 3]),
array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4, 5]),
array([0, 1, 2, 3, 4, 5, 6]), array([0, 1, 2, 3, 4, 5, 6, 7])],
dtype=object)
print(np.array([i.astype('int8') for i in arr]))
array([array([0], dtype=int8), array([0, 1], dtype=int8),
array([0, 1, 2], dtype=int8), array([0, 1, 2, 3], dtype=int8),
array([0, 1, 2, 3, 4], dtype=int8),
array([0, 1, 2, 3, 4, 5], dtype=int8),
array([0, 1, 2, 3, 4, 5, 6], dtype=int8),
array([0, 1, 2, 3, 4, 5, 6, 7], dtype=int8)], dtype=object)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.