jax.Array.view#
- abstract Array.view(dtype=None, type=None)[原始碼]#
傳回陣列的位元副本,視為新的 dtype。
這是
jax.lax.bitcast_convert_type()
的功能更完整的包裝器。如果來源和目標 dtype 具有相同的位元寬度,則結果具有與輸入陣列相同的形狀。如果目標 dtype 的位元寬度與來源不同,則會相應地調整結果的最後一個軸的大小。
>>> jnp.zeros([1,2,3], dtype=jnp.int16).view(jnp.int8).shape (1, 2, 6) >>> jnp.zeros([1,2,4], dtype=jnp.int8).view(jnp.int16).shape (1, 2, 2)
涉及布林值的轉換在所有情況下都沒有明確定義。關於如上所述的結果形狀,布林值被視為具有 8 位元寬度。但是,當轉換為布林陣列時,輸入應僅包含 0 或 1 位元組。否則,結果可能是不可預測的,或者可能會根據結果的使用方式而改變。
此轉換是保證且安全的
>>> jnp.array([1, 0, 1], dtype=jnp.int8).view(jnp.bool_) Array([ True, False, True], dtype=bool)
但是,對於任何涉及視圖的表達式的結果,例如:jnp.array([1, 2, 3], dtype=jnp.int8).view(jnp.bool_),不保證任何結果。特別是,結果可能會在 JAX 版本之間以及根據平台而改變。為了安全地將此類陣列轉換為布林陣列,請將其與 0 進行比較
>>> jnp.array([1, 2, 0], dtype=jnp.int8) != 0 Array([ True, True, False], dtype=bool)