NumPy提出了一种获取数组最大值索引的方法np.argmax.
我想要一个类似的东西,但返回N最大值的索引.
例如,如果我有一个数组,[1, 3, 2, 4, 5],function(array, n=3)将返回的索引[4, 3, 1]相对应的元素[5, 4, 3].
我view()对以下代码片段中的方法感到困惑.
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2,2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16*5*5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16*5*5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
Run Code Online (Sandbox Code Playgroud)
我的困惑在于以下几行.
x = x.view(-1, 16*5*5)
Run Code Online (Sandbox Code Playgroud)
tensor.view()功能有什么作用?我已经在许多地方看到了它的用法,但我无法理解它如何解释它的参数.
如果我将负值作为参数给view()函数会发生什么?例如,如果我打电话会发生什么tensor_variable.view(1, 1, -1)?
任何人都可以view()通过一些例子解释功能的主要原理吗?
我对这段代码的工作原理有点困惑:
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,无花果轴如何工作?它有什么作用?
为什么这不能做同样的事情:
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
Run Code Online (Sandbox Code Playgroud)
谢谢
看来我的数据格式为NumPy数组列表(type() = np.ndarray):
[array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]),
array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]),
array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]),
array([[ 0.00353654]]), array([[ 0.00353654]]), array([[ 0.00353654]]),
array([[ 0.00353654]])]
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个polyfit函数:
m1 = np.polyfit(x, y, deg=2)
Run Code Online (Sandbox Code Playgroud)
但是,它返回错误: TypeError: expected 1D vector for x
我假设我需要将我的数据展平为:
[0.00353654, 0.00353654, 0.00353654, 0.00353654, 0.00353654, 0.00353654 ...]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了列表理解,它通常适用于列表列表,但是这正如预期的那样无效:
[val for sublist in risks for val in sublist]
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
我正在尝试使用此代码并排绘制两个分布图
fig,(ax1,ax2) = plt.subplots(1,2)
sns.displot(x =X_train['Age'], hue=y_train, ax=ax1)
sns.displot(x =X_train['Fare'], hue=y_train, ax=ax2)
Run Code Online (Sandbox Code Playgroud)
它返回以下结果(两个空的子图,后跟一个分布在两行上的图)-
如果我用 violinplot 尝试相同的代码,它会按预期返回结果
fig,(ax1,ax2) = plt.subplots(1,2)
sns.violinplot(y_train, X_train['Age'], ax=ax1)
sns.violinplot(y_train, X_train['Fare'], ax=ax2)
Run Code Online (Sandbox Code Playgroud)
为什么 displot 返回不同类型的输出,我该怎么做才能在同一行上输出两个图?
我编写了以下代码来在不同的子图中绘制 6 个饼图,但出现错误。如果我只使用它来绘制 2 个图表,则此代码可以正常工作,但除此之外还会产生错误。
我的数据集中有 6 个分类变量,它们的名称存储在 list 中cat_cols。图表将根据训练数据绘制train。
代码
fig, axes = plt.subplots(2, 3, figsize=(24, 10))
for i, c in enumerate(cat_cols):
train[c].value_counts()[::-1].plot(kind = 'pie', ax=axes[i], title=c, autopct='%.0f', fontsize=18)
axes[i].set_ylabel('')
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
错误
AttributeError: 'numpy.ndarray' object has no attribute 'get_figure'
Run Code Online (Sandbox Code Playgroud)
我们如何纠正这个问题?
看到这个答案我想知道X的平面视图的创建是否基本相同,只要我知道X中的轴数是3:
A = X.ravel()
s0, s1, s2 = X.shape
B = X.reshape(s0*s1*s2)
C = X.reshape(-1) # thanks to @hpaulj below
Run Code Online (Sandbox Code Playgroud)
我不是在问A和B和C是否相同.
我想知道在这种情况下特定使用ravel和reshape在这种情况下是否基本相同,或者如果您提前知道X的轴数,是否存在重大差异,优点或缺点.
第二种方法需要几微秒,但这似乎与尺寸无关.
我有一组9个不同的数组,大小均为n × n。我需要明智地将它们组合在一起以产生特定的数组。
例如:给定9个大小相等的数组的集合:
a1 = np.array([[11, 12, 13], [14, 15, 16], [17, 18, 19]])
a2 = np.array([[21, 22, 23], [24, 25, 26], [27, 28, 29]])
a3 = np.array([[31, 32, 33], [34, 35, 36], [37, 38, 39]])
a4 = np.array([[41, 42, 43], [44, 45, 46], [47, 48, 49]])
a5 = np.array([[51, 52, 53], [54, 55, 56], [57, 58, 59]])
a6 = np.array([[61, 62, 63], [64, 65, 66], [67, 68, 69]])
a7 = np.array([[71, 72, 73], [74, 75, 76], …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的图(这是著名的 Wine 数据集):
正如您所看到的,x 轴标签重叠,因此我需要旋转。
注意!我对旋转 x 刻度不感兴趣(如此处所述),但对标签文本(即alcohol、malic_acid等)感兴趣。
创建绘图的逻辑如下:我使用 创建一个网格axd = fig.subplot_mosaic(...),然后为底部绘图设置标签axd[...].set_xlabel("something")。set_xlabel如果能接受一个参数那就太好了rotation,但不幸的是事实并非如此。
我有一个像这样的压缩对象:
z = zip(a, b)
lst = list(z)
print(lst)
Run Code Online (Sandbox Code Playgroud)
输出:
[(0, array([[72, 65],
[70, 71]], dtype=uint8)),
(1, array([[ 71, 99],
[190, 163]], dtype=uint8)),
(2, array([[52, 59],
[69, 72]], dtype=uint8)), etc...
Run Code Online (Sandbox Code Playgroud)
我想将此列表平展为以下内容:
[0, 72, 65, 70, 71, 1, 71, 99, 190, 163, 2, 52, 59 etc..]
Run Code Online (Sandbox Code Playgroud)
我试过这样做
y = sum(w, ())
# or
y = list(itertools.chain(*lst))
Run Code Online (Sandbox Code Playgroud)
但是当我打印时数组仍然存在。
我究竟做错了什么?
我有一个numpy数组
[[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
...,
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
我想拥有它
0
0
0
.
.
0
0
Run Code Online (Sandbox Code Playgroud)
我知道我们必须使用reshape函数,但是如何使用它,是我无法弄清楚的,
我的尝试
np.reshape(new_arr, newshape=1)
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误
ValueError: total size of new array must be unchanged
Run Code Online (Sandbox Code Playgroud)
该文件 是不是很友好