簡體   English   中英

將一行浮點數分配給二維 Numpy 數組

[英]Assign a Row of Floats to a 2-D Numpy Array

我正在嘗試將浮點數分配給二維 numpy 數組。 二維數組最初由整數組成。 分配后,我打算更改的行完全變為零。

有誰知道為什么會這樣?

>>> s=numpy.array([[1,0,0],[1,0,0]])
>>> s[1]=numpy.array([.3,.3,.3])
>>> s
array([[1, 0, 0],
       [0, 0, 0]])

您需要顯式轉換為浮點數:

s = numpy.array([[1,0,0],[1,0,0]])
s = s.astype(numpy.float32, copy=False)
s[1] = numpy.array([.3,.3,.3])

更新s

array([[1. , 0. , 0. ],
       [0.3, 0.3, 0.3]], dtype=float32)

這是由於numpy中的dtype,這里理解一些執行,

In [1]: s = numpy.array([[1,0,0],[1,0,0]])

In [2]: a = numpy.array([.3,.3,.3])

In [3]: s.dtype
Out[3]: dtype('int64')

In [4]: a.dtype
Out[4]: dtype('float64')

In [5]: a.astype(int)
Out[5]: array([0, 0, 0])

因此,在執行s[1] = numpy.array([.3,.3,.3])時,它會轉換為float64int64 ,這就是為什么它存儲為[0, 0, 0]

如果您打算在將來保留浮點數,您可以通過在創建s時至少提供一個顯式浮點數來讓 Python 知道這一點:

s=numpy.array([[1,0,0],[1,0,0.0]])

暫無
暫無

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

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