日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonflat怎么设置_python – numpy 2d和1d add flat

發布時間:2024/4/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonflat怎么设置_python – numpy 2d和1d add flat 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果numpy.add有2個參數,則將它們作為添加的兩個操作數.如果給出3個參數,前兩個是添加的,第三個是結果.實際上不是結果,而是應該保存結果的數組.

所以你用b添加了b并希望將它存儲在[1:3,0:3] .flat中.

讓我們試試np.add(b,b)給出

import numpy as np

a = np.zeros((4, 5))

b = np.ones(6)

np.add(b, b)

# returns array([ 2., 2., 2., 2., 2., 2.])

所以現在我嘗試了[1:3,0:3] .flat,它返回< numpy.flatiter,位于0x22204e80c10>.這意味著它返回一個迭代器,因此它不是數組.但是我們不需要一個我們想要一個數組的迭代器.有一種叫做ravel()的方法.所以嘗試[1:3,0:3] .ravel()會返回:

array([ 0., 0., 0., 0., 0., 0.])

所以我們有一個數組.特別是陣列也可用于存儲結果(相同的形狀!).所以我嘗試過:

np.add(b, b, a[1:3, 0:3].ravel())

# array([ 2., 2., 2., 2., 2., 2.])

但是讓我們看看是否有變化:

a

#array([[ 0., 0., 0., 0., 0.],

# [ 0., 0., 0., 0., 0.],

# [ 0., 0., 0., 0., 0.],

# [ 0., 0., 0., 0., 0.]])

所以一個沒有改變.這是因為ravel()只返回一個視圖(賦值將傳播到unraveled數組),否則它會返回一個副本.將結果保存在副本中是沒有意義的,因為out參數的重點是操作是就地完成的.我只是猜測為什么要制作副本,但我認為這是因為我們從一個較大的數組中取出一部分,其中該部分在內存中不連續.

所以我建議你不要在這種情況下使用out參數,而是使用np.add的返回并將其存儲在指定區域中:

a[1:3, 0:3] = np.add(b, b).reshape(2,3) # You need to reshape here!

a

#array([[ 0., 0., 0., 0., 0.],

# [ 2., 2., 2., 0., 0.],

# [ 2., 2., 2., 0., 0.],

# [ 0., 0., 0., 0., 0.]])

此外,[1:3,0:3] .flat = np.add(b,b)也有效.

我認為這本書要么已經過時了,而且它與較舊的numpy版本一起工作,或者它根本就沒用過,這本書就是一個錯誤.

總結

以上是生活随笔為你收集整理的pythonflat怎么设置_python – numpy 2d和1d add flat的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。