假设我有一个x
带有数字的特定列表,另一个y
带有其他数字的列表.元素y
应该是元素x
,但由于测量中的噪声,它们有点不同.我想找到,对于每个值y
,它的值x
最接近它.
我可以通过一些循环来检查,并检查每个元素y[i]
,哪个元素x[j]
最小化abs(x[j]-y[i])
,但我很确定有一个更容易,更简洁的方法来做到这一点.列表可能很大,所以我在这里寻找有效的代码.
我到目前为止编写的代码是:
x_in = [1.1, 2.2, 3, 4, 6.2]
y_in = [0.9, 2, 1.9, 6, 5, 6, 6.2, 0.5, 0, 3.1]
desired_output = [1.1, 2.2, 2.2, 6.2, 4, 6.2, 6.2, 1.1, 1.1, 3]
y_out = []
for y in y_in:
aux = [abs(l - y) for l in x_in]
mn,idx = min( (aux[i],i) for i in range(len(aux)) )
y_out.append(x_in[idx])
>>> y_out …
Run Code Online (Sandbox Code Playgroud) 我有这个情节:
值范围从 0 到 1,但颜色条扩展到 1 以上和 0 以下。我希望颜色条不显示超出[0, 1]
范围的值。如何才能做到这一点?
我的代码:
import numpy as np
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Contour(
z=np.random.rand(10,10),
x=np.linspace(0,10,10),
y=np.linspace(0,10,10),
contours=dict(
start=0,
end=1,
size=0.25,
),
colorbar=dict(
tick0=0,
dtick=1
)
))
fig.show()
Run Code Online (Sandbox Code Playgroud) 我正在使用Python的库somoclu
来训练使用Python的自组织地图.该库允许用户在CPU(Intel Core i7-8700)或GPU(GeForce GTX 1080 Ti)上执行培训.
我注意到CPU运行脚本的速度比GPU快,所以我进行了一次扫描,改变了数据点的数量和地图的大小,看看GPU在某些时候是否胜过CPU.这是脚本:
import numpy as np
import somoclu
import time
m = 3 # Number of dimensions
points = [5000, 30000, 80000, 150000, 300000] # Number of datapoints
iterMax = 200 # Max number of iterations
mapSize = [4, 32, 64, 128] # Dimensions of SOM
np.random.seed(0)
#%% SOM
for n in points:
for size in mapSize:
y = np.random.rand(n,m) # Input data
# With CPU
t = time.clock() # Start time
som …
Run Code Online (Sandbox Code Playgroud) 此处提供的示例代码生成此图:
我想知道是否可以绘制完全相同但“镜像”的内容,如下所示:
以下是提供的示例代码,以防链接停止工作:
import matplotlib.pyplot as plt
import numpy as np
# Fixing random state for reproducibility
np.random.seed(19680801)
plt.rcdefaults()
fig, ax = plt.subplots()
# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))
ax.barh(y_pos, performance, xerr=error, align='center',
color='green', ecolor='black')
ax.set_yticks(y_pos)
ax.set_yticklabels(people)
ax.invert_yaxis() # labels read top-to-bottom
ax.set_xlabel('Performance')
ax.set_title('How fast do you want to go today?')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我有一个字符串矩阵,如下所示:
readFiles = [
"11221", "09";
"11222", "13";
"12821", "06";
"13521", "02";
"13522", "13";
"13711", "05";
"13921", "01";
"14521", ".001";
"15712", ".003"
];
Run Code Online (Sandbox Code Playgroud)
这些用于自动访问某些文件夹和文件。然后,我想做的是以下操作(带有ii
一些整数):
FileName = strcat('../../Datasets/hc-1/d',readFiles(ii,1),'/d',...
readFiles(ii,1),readFiles(ii,2),'.dat');
data(ii,:) = LoadBinary(FileName, 6);
Run Code Online (Sandbox Code Playgroud)
FileName
然后使用双引号生成字符串(我不确定为什么)。因此其值为:
FileName =
"../../Datasets/hc-1/d13921/d1392101.dat"
Run Code Online (Sandbox Code Playgroud)
LoadBinary()
尝试执行以下操作时,该函数返回错误:
lastdot = strfind(FileName,'.');
FileBase = FileName(1:lastdot(end)-1); % This line
Run Code Online (Sandbox Code Playgroud)
但是,如果我FileName
使用单引号手动创建字符串,则该功能可以正常运行。
简而言之,如果我尝试索引使用FileName(1:lastdot(end)-1)
上述各行创建的字符串()(导致FileName = "../../Datasets/hc-1/d13921/d1392101.dat"
),则MATLAB将返回错误。如果我用单引号(FileName = '../../Datasets/hc-1/d13921/d1392101.dat'
)手动创建该函数,则该函数正常运行。
为什么会这样?有没有办法解决它(即将双引号字符串转换为单引号字符串)?
我在互联网上找到了许多与此相关的主题,但找不到解决方案。
假设我想从此示例列表中下载任何 PMML 模型,并在 Python 中运行它们(最好是 Python 3)。有什么办法可以做到这一点吗?
我正在寻找一种方法来导入在 Python 外部部署的 PMML,并将其导入以与该语言一起使用。
我有一个正方形大小的矩阵C
通过C
,我想建立一个对角块矩阵与它重复N=2C(1+C)
多次.问题是C
可以改变的值,所以我不知道我是否可以使用blkdiag
,因为我不知道我应该输入的参数的数量,因为矩阵的大小是用户选择的变量.我怎么能在MATLAB中做到这一点?
我对 PyQt 很陌生,我发现在窗口中订购小部件非常困难。
我有一个实时更新的绘图,一个每次用户单击绘图时都会更新的表格,以及两个按钮(开始/停止)。
当前布局的行为方式如下:
我希望它看起来像这样:
其中“其他小部件”对应于我将在此工作时添加的未来小部件(例如滑块或下拉列表)。桌子也应该尽可能的薄,以最大化地块的大小并且不让桌子占据不必要的空间。我当前的代码如下(它是独立的):
import sys
import numpy as np
from matplotlib.backends.qt_compat import QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvas
from matplotlib.figure import Figure
def onclick(event):
global clicks
clicks.append(event.xdata)
return
class ApplicationWindow(QtWidgets.QMainWindow):
def __init__(self):
super(ApplicationWindow, self).__init__()
self._title = 'Prueba real-time'
self.setWindowTitle(self._title)
self._main = QtWidgets.QWidget()
self.setCentralWidget(self._main)
layout = QtWidgets.QHBoxLayout(self._main)
dynamic_canvas = FigureCanvas(Figure(figsize=(10, 10)))
layout.addWidget(dynamic_canvas)
self._dynamic_ax = dynamic_canvas.figure.subplots()
dynamic_canvas.figure.canvas.mpl_connect('button_press_event', onclick)
self._dynamic_ax.grid()
self._timer = dynamic_canvas.new_timer(
100, [(self._update_window, (), {})])
self._timer.start()
button_stop = QtWidgets.QPushButton('Stop', self)
layout.addWidget(button_stop)
button_stop.clicked.connect(self.button_pressed)
button_start = QtWidgets.QPushButton('Start', self)
layout.addWidget(button_start)
button_start.clicked.connect(self.button_pressed) …
Run Code Online (Sandbox Code Playgroud) 假设我们有一个df
具有重复行的数据帧.我想存储唯一行的ID,以便每个行都有一个整数列表(它们出现在数据框中的ID).
让我举个例子:
import numpy as np
import pandas as pd
np.random.seed(0)
m = ['a','b']
M = ['X','Y']
n = np.arange(3)
size = 10
df = pd.DataFrame({'m': np.random.choice(m, size=size, replace=True),
'M': np.random.choice(M, size=size, replace=True),
'n': np.random.choice(n, size=size, replace=True)})
Run Code Online (Sandbox Code Playgroud)
这会生成以下数据帧:
m M n
0 a Y 2
1 b X 2
2 b X 0
3 a Y 1
4 b X 1
5 b X 1
6 b X 1
7 b X 0
8 b X 1
9 …
Run Code Online (Sandbox Code Playgroud) 我想使用ndimage.generic_filter()
from 来应用一个非常简单的函数scipy
。这是代码:
import numpy as np
import scipy.ndimage as ndimage
data = np.random.rand(400,128)
dimx = int(np.sqrt(np.size(data,0)))
dimy = dimx
coord = np.random.randint(np.size(data,0), size=(dimx,dimy))
def test_func(values):
idx_center = int(values[4])
weight_center = data[idx_center]
weights_around = data[values]
differences = weights_around - weight_center
distances = np.linalg.norm(differences, axis=1)
return np.max(distances)
results = ndimage.generic_filter(coord,
test_func,
footprint = np.ones((3,3)))
Run Code Online (Sandbox Code Playgroud)
当我执行它时,出现以下错误:
SystemError: <class 'int'> returned a result with an error set
Run Code Online (Sandbox Code Playgroud)
当试图胁迫values[4]
一个人时int
。如果我在test_func()
不使用ndimage.generic_filter()
随机数组的情况下运行该函数values
,则该函数可以正常运行。
为什么会发生此错误?有办法使它起作用吗?