根据 Bandit 的文档,导入 subprocess 模块被认为是低安全问题 (B404)。不幸的是,它没有提供替代方案或解释原因。因此,我有两个问题:
说我有一个排序的numpy数组:
arr = np.array([0.0, 0.0],
[0.5, 0.0],
[1.0, 0.0],
[0.0, 0.5],
[0.5, 0.5],
[1.0, 0.5],
[0.0, 1.0],
[0.5, 1.0],
[1.0, 1.0])
Run Code Online (Sandbox Code Playgroud)
并假设我对其进行了非平凡的操作,以便拥有一个新数组,该数组与旧数组相同,但顺序不同:
arr2 = np.array([0.5, 0.0],
[0.0, 0.0],
[0.0, 0.5],
[1.0, 0.0],
[0.5, 0.5],
[1.0, 0.5],
[0.0, 1.0],
[1.0, 1.0],
[0.5, 1.0])
Run Code Online (Sandbox Code Playgroud)
问题是:如何获取中每个元素arr2放置位置的索引arr。换句话说,我想要一个方法,它同时接受两个数组并返回arr2与元素长度相同但长度为的数组arr。例如,返回数组的第一个元素将是arr2in中第一个元素的索引arr。
where_things_are(arr2, arr)
return : array([1, 0, 3, 2, 4, 5, 6, 8, 7])
Run Code Online (Sandbox Code Playgroud)
numpy中已经存在这样的功能吗?
编辑:
我试过了:
np.array([np.where((arr == x).all(axis=1)) for x in arr2])
Run Code Online (Sandbox Code Playgroud)
这返回了我想要的东西,但我的问题仍然存在:是否有使用numpy方法执行此操作的更有效方法?
编辑2: …
我想向 matplotlib 图形工具栏中的自定义按钮添加一个图标。我怎样才能做到这一点?到目前为止,我有以下代码:
import matplotlib
matplotlib.rcParams["toolbar"] = "toolmanager"
import matplotlib.pyplot as plt
from matplotlib.backend_tools import ToolToggleBase
class NewTool(ToolToggleBase):
...[tool code]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1, 2, 3], label="legend")
ax.legend()
fig.canvas.manager.toolmanager.add_tool("newtool", NewTool)
fig.canvas.manager.toolbar.add_tool(toolmanager.get_tool("newtool"), "toolgroup")
fig.show()
Run Code Online (Sandbox Code Playgroud)
目前,它唯一做的就是添加一个新按钮(它可以完成我想要的操作),但图标只是工具的名称,即:“newtool”。如何更改 PNG 图像等自定义图标?