证明 NumPy 数组
简介
在 Python 中,NumPy 提供了高效的数值计算工具。一项常见的挑战是调整 NumPy 数组中的元素,将它们左对齐、右对齐、上对齐或下对齐。本文提出了一种使用矢量化方法的改进解决方案。
矢量化解决方案
justify 函数对齐 2D 数组中的元素,将它们推送到指定的位置
def justify(a, invalid_val=0, axis=1, side='left'): justified_mask = np.sort(a!=invalid_val, axis=axis) if (side=='up') or (side=='left'): justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) if axis==1: out[justified_mask] = a[a!=invalid_val] else: out.T[justified_mask.T] = a.T[a.T!=invalid_val] return out
用法
a = np.array([[1, 0, 2, 0], [3, 0, 4, 0], [5, 0, 6, 0], [0, 7, 0, 8]]) print(justify(a, axis=0, side='up')) # Justify values vertically "up" print(justify(a, axis=0, side='down')) # Justify values vertically "down" print(justify(a, axis=1, side='left')) # Justify values horizontally "left" print(justify(a, axis=1, side='right')) # Justify values horizontally "right"
输出
[[1, 7, 2, 8] [3, 0, 4, 0] [5, 0, 6, 0] [0, 0, 0, 0]] [[0, 0, 0, 0] [1, 0, 2, 0] [3, 0, 4, 0] [5, 7, 6, 8]] [[1, 2, 0, 0] [3, 4, 0, 0] [5, 6, 0, 0] [0, 7, 0, 8]] [[0, 0, 1, 2] [0, 0, 3, 4] [0, 0, 5, 6] [0, 0, 7, 8]]
扩展为通用案例
justify_nd 函数扩展了此方法,以对齐任何维度的 ndarray 中的元素。
def justify_nd(a, invalid_val, axis, side): justified_mask = np.sort(a!=invalid_val, axis=axis) if side=='front': justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) pushax = lambda a: np.moveaxis(a, axis, -1) if (axis==-1) or (axis==a.ndim-1): out[justified_mask] = a[a!=invalid_val] else: pushax(out)[pushax(justified_mask)] = pushax(a)[pushax(a!=invalid_val)] return out
用法(通用案例)
a = np.array([[[54, 57, 0, 77], [77, 0, 0, 31], [46, 0, 0, 98], [98, 22, 68, 75]], [[49, 0, 0, 98], [ 0, 47, 0, 87], [82, 19, 0, 90], [79, 89, 57, 74]], [[ 0, 0, 0, 0], [29, 0, 0, 49], [42, 75, 0, 67], [42, 41, 84, 33]], [[ 0, 0, 0, 38], [44, 10, 0, 0], [63, 0, 0, 0], [89, 14, 0, 0]]]) print(justify_nd(a, invalid_val=0, axis=0, side='front')) # Justify first dimension "front" print(justify_nd(a, invalid_val=0, axis=1, side='front')) # Justify second dimension "front" print(justify_nd(a, invalid_val=0, axis=2, side='front')) # Justify third dimension "front" print(justify_nd(a, invalid_val=0, axis=2, side='end')) # Justify third dimension "end"
输出
[[[54, 57, 0, 77], [77, 47, 0, 31], [46, 19, 0, 98], [98, 22, 68, 75]], [[49, 0, 0, 98], [29, 10, 0, 87], [82, 75, 0, 90], [79, 89, 57, 74]], [[ 0, 0, 0, 38], [44, 0, 0, 49], [42, 0, 0, 67], [42, 41, 84, 33]], [[ 0, 0, 0, 0], [ 0, 0, 0, 0], [63, 0, 0, 0], [89, 14, 0, 0]]] [[[54, 57, 68, 77], [77, 22, 0, 31], [46, 0, 0, 98], [98, 0, 0, 75]], [[49, 47, 57, 98], [82, 19, 0, 87], [79, 89, 0, 90], [ 0, 0, 0, 74]], [[29, 75, 84, 49], [42, 41, 0, 67], [42, 0, 0, 33], [ 0, 0, 0, 0]], [[44, 10, 0, 38], [63, 14, 0, 0], [89, 0, 0, 0], [ 0, 0, 0, 0]]] [[[ 0, 54, 57, 77], [ 0, 0, 77, 31], [ 0, 0, 46, 98], [98, 22, 68, 75]], [[ 0, 0, 49, 98], [ 0, 0, 47, 87], [ 0, 82, 19, 90], [79, 89, 57, 74]], [[ 0, 0, 0, 0], [ 0, 0, 29, 49], [ 0, 42, 75, 67], [42, 41, 84, 33]], [[ 0, 0, 0, 38], [ 0, 0, 44, 10], [ 0, 0, 0, 63], [ 0, 0, 89, 14]]]
以上是如何有效地证明 NumPy 数组中的元素合理?的详细内容。更多信息请关注PHP中文网其他相关文章!

pythonlistscanStoryDatatepe,ArrayModulearRaysStoreOneType,and numpyArraySareSareAraysareSareAraysareSareComputations.1)列出sareversArversAtileButlessMemory-Felide.2)arraymoduleareareMogeMogeNareSaremogeNormogeNoreSoustAta.3)

WhenyouattempttostoreavalueofthewrongdatatypeinaPythonarray,you'llencounteraTypeError.Thisisduetothearraymodule'sstricttypeenforcement,whichrequiresallelementstobeofthesametypeasspecifiedbythetypecode.Forperformancereasons,arraysaremoreefficientthanl

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

ThescriptisrunningwiththewrongPythonversionduetoincorrectdefaultinterpretersettings.Tofixthis:1)CheckthedefaultPythonversionusingpython--versionorpython3--version.2)Usevirtualenvironmentsbycreatingonewithpython3.9-mvenvmyenv,activatingit,andverifying

Pythonarrayssupportvariousoperations:1)Slicingextractssubsets,2)Appending/Extendingaddselements,3)Insertingplaceselementsatspecificpositions,4)Removingdeleteselements,5)Sorting/Reversingchangesorder,and6)Listcomprehensionscreatenewlistsbasedonexistin

NumPyarraysareessentialforapplicationsrequiringefficientnumericalcomputationsanddatamanipulation.Theyarecrucialindatascience,machinelearning,physics,engineering,andfinanceduetotheirabilitytohandlelarge-scaledataefficiently.Forexample,infinancialanaly

useanArray.ArarayoveralistinpythonwhendeAlingwithHomeSdata,performance-Caliticalcode,orinterFacingWithCcccode.1)同质性data:arrayssavememorywithtypedelements.2)绩效code-performance-clitionalcode-clitadialcode-critical-clitical-clitical-clitical-clitaine code:araysofferferbetterperperperformenterperformanceformanceformancefornalumericalicalialical.3)

不,notalllistoperationsareSupportedByArrays,andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing,wheremactssperformance.2)listssdonotguaranteeconeeconeconstanttanttanttanttanttanttanttanttimecomplecomecomecomplecomecomecomecomecomecomplecomectaccesslikearrikearraysodo。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。