我正在改编公司提供的一些代码(用于控制仪器)。我自己不是 Python 专家,所以我想了解以某种方式做某事是否有任何特殊优势。
他们的代码基本上是
def enum(**enums):
return type('Enum', (), enums)
Inst = enum(
CONTINUE = 0,
STOP = 1,
LOOP = 2,
END_LOOP = 3,
JSR = 4,
RTS = 5,
BRANCH = 6,
LONG_DELAY = 7,
WAIT = 8,
RTI = 9
)
Run Code Online (Sandbox Code Playgroud)
他们使用它来访问上述“条目”的值,例如:
Inst.RTS
% 5
Run Code Online (Sandbox Code Playgroud)
按照我的理解,Inst是一个type对象。
为了存储字符串及其相关值,我还可以定义一个dict:
Inst = {'CONTINUE':0, 'STOP':1, 'LOOP':2, 'END_LOOP':3, 'JSR':4, 'RTS':5}
Run Code Online (Sandbox Code Playgroud)
然后基本上得到相同的结果:
Inst['RTS']
% 5
Run Code Online (Sandbox Code Playgroud)
题
type与普通对象相比,对象有什么用途/有什么优点dict?或者上面的例子只是一个坏例子?
我有一个,dict并且我将一个数组与每个键关联(键本身是一个数字)。
最小示例:
import numpy as np
data = {}
data[2.5] = np.array([np.array([1,2,3,4]), np.array([5,6,7,8])])
Run Code Online (Sandbox Code Playgroud)
然后我保存dict:
np.save('file.npy', data)
Run Code Online (Sandbox Code Playgroud)
然后重新加载它:
datanew = np.load('file.npy')
Run Code Online (Sandbox Code Playgroud)
-
现在,为了访问存储在每个密钥中的内容,我不能仅仅这样做:
datanew[2.5]
Run Code Online (Sandbox Code Playgroud)
但是我要做
datanew[()][2.5]
Run Code Online (Sandbox Code Playgroud)
我有一个远程 Git 存储库,它是一个包含一堆文件的文件夹。
我刚刚在我的计算机上创建了一个新文件,没有拉取现有的 Git 存储库或任何东西。我可以推送这个新文件,使其最终出现在我在远程存储库中的文件夹中吗?
还是我必须pull先添加我的文件,然后push再添加。
(该文件不需要与文件夹中的任何其他文件一起使用)
我想保存一个dict或数组。
我尝试了 withnp.save和 with pickle,发现前者总是花费更少的时间。
我的实际数据要大得多,但为了演示目的,我在这里只展示了一小部分:
import numpy as np
#import numpy.array as array
import time
import pickle
b = {0: [np.array([0, 0, 0, 0])], 1: [np.array([1, 0, 0, 0]), np.array([0, 1, 0, 0]), np.array([0, 0, 1, 0]), np.array([0, 0, 0, 1]), np.array([-1, 0, 0, 0]), np.array([ 0, -1, 0, 0]), np.array([ 0, 0, -1, 0]), np.array([ 0, 0, 0, -1])], 2: [np.array([2, 0, 0, 0]), np.array([1, 1, 0, 0]), np.array([1, 0, 1, 0]), np.array([1, …Run Code Online (Sandbox Code Playgroud) 我有以下(示例)代码:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
n_lines = 5
x = np.linspace(0, 10, 100)
y = np.sin(x[:, None] + np.pi * np.linspace(0, 1, n_lines))
c = np.arange(1, n_lines + 1)
norm = mpl.colors.Normalize(vmin=c.min(), vmax=c.max())
cmap = mpl.cm.ScalarMappable(norm=norm, cmap=mpl.cm.jet)
cmap.set_array([])
fig, ax = plt.subplots(dpi=100)
for i, yi in enumerate(y.T):
ax.plot(x, yi, c=cmap.to_rgba(i + 1))
fig.colorbar(cmap, ticks=c)
plt.show();
Run Code Online (Sandbox Code Playgroud)
我想找到一个替代物cmap.to_rgba,使每行的颜色显示为蓝色的不同阴影。
基本上,我希望与该代码的结果保持相同的布局,但要使用颜色映射Blues。
我该怎么做?