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

歡迎訪問 生活随笔!

生活随笔

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

python

python处理重复的复制粘贴_如何将数组复制/重复N次到新数组中?

發布時間:2024/9/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python处理重复的复制粘贴_如何将数组复制/重复N次到新数组中? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假設您要復制10次這些值,那么只需^{}10個數組:def repeat(arr, count):

return np.stack([arr for _ in range(count)], axis=0)

axis=0實際上是默認值,所以這里沒有必要,但我認為這樣可以更清楚地說明您在前面添加了新的軸。

事實上,這與stack的示例所做的幾乎相同:>>> arrays = [np.random.randn(3, 4) for _ in range(10)]

>>> np.stack(arrays, axis=0).shape

(10, 3, 4)

乍一看,您可能認為^{}或^{}更適合。

但是repeat是關于在現有軸上重復(或展平數組),因此您需要在之前或之后reshape。(這同樣有效,但我認為沒有那么簡單。)

而tile(假設您使用類似reps-的標量數組reps,它基本上是repeat)是關于在所有方向上填寫多維規范,這比您希望的這個簡單情況復雜得多。

所有這些選擇都將同樣有效。它們都會將數據復制10次以上,這是很昂貴的部分;任何內部處理、構建微型中間對象等的成本都無關緊要。提高速度的唯一方法是避免復制。你可能不想這么做。

但是,如果要共享10個副本中的行存儲,您可能需要^{}:def repeat(arr, count):

return np.broadcast_to(arr, (count,)+arr.shape)

注意broadcast_to實際上并不能保證它避免復制,只是它返回某種只讀視圖,其中“廣播數組的多個元素可能引用單個內存位置”。實際上,這會避免抄襲。如果出于某種原因(或者您想要一個可寫的視圖,這通常是一個糟糕的主意,但是也許您有一個很好的理由……)您確實需要保證這一點,那么您必須下拉到^{}:def repeat(arr, count):

shape = (count,) + arr.shape

strides = (0,) + arr.strides

return np.lib.stride_tricks.as_strided(

arr, shape=shape, strides=strides, writeable=False)

請注意,as_strided的一半文檔警告您可能不應該使用它,另一半則警告您絕對不應該將其用于可寫視圖,因此…在執行之前,請確保這是您想要的。

總結

以上是生活随笔為你收集整理的python处理重复的复制粘贴_如何将数组复制/重复N次到新数组中?的全部內容,希望文章能夠幫你解決所遇到的問題。

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