相关疑难解决方法(0)

如何在NumPy数组中获得N个最大值的索引?

NumPy提出了一种获取数组最大值索引的方法np.argmax.

我想要一个类似的东西,但返回N最大值的索引.

例如,如果我有一个数组,[1, 3, 2, 4, 5],function(array, n=3)将返回的索引[4, 3, 1]相对应的元素[5, 4, 3].

python numpy max numpy-ndarray

425
推荐指数
10
解决办法
31万
查看次数

"视图"方法在PyTorch中如何工作?

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()通过一些例子解释功能的主要原理吗?

python memory torch pytorch tensor

144
推荐指数
5
解决办法
9万
查看次数

如何在matplotlib中获得多个子图?

我对这段代码的工作原理有点困惑:

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)

谢谢

python matplotlib subplot

116
推荐指数
8
解决办法
19万
查看次数

展平NumPy数组列表?

看来我的数据格式为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)

最好的方法是什么?

python arrays numpy list-comprehension

42
推荐指数
4
解决办法
3万
查看次数

什么是连续的内存块?

就像在标题中一样,什么是连续的内存块?

c memory heap heap-fragmentation

38
推荐指数
3
解决办法
3万
查看次数

在numpy中flatten和ravel有什么区别?

Numpy v 1.9包含两个看似相同的功能: 'flatten''ravel'

有什么不同?什么时候我可以选择一个与另一个将2-D np.array转换为1-D?

numpy

22
推荐指数
1
解决办法
7314
查看次数

seaborn 未在定义的子图中绘制

我正在尝试使用此代码并排绘制两个分布图

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 返回不同类型的输出,我该怎么做才能在同一行上输出两个图?

python data-visualization seaborn

10
推荐指数
1
解决办法
5567
查看次数

绘制子图时如何修复“numpy.ndarray”对象没有属性“get_figure”

我编写了以下代码来在不同的子图中绘制 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)

我们如何纠正这个问题?

python numpy matplotlib

7
推荐指数
1
解决办法
4045
查看次数

当已知轴数时,X.ravel()和X.reshape(s0*s1*s2)之间的差异

看到这个答案我想知道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是否相同.

我想知道在这种情况下特定使用ravelreshape在这种情况下是否基本相同,或者如果您提前知道X的轴数,是否存在重大差异,优点或缺点.

第二种方法需要几微秒,但这似乎与尺寸无关.

numpy

3
推荐指数
1
解决办法
1424
查看次数

以特定方式组合一组数组

我有一组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)

python arrays numpy

3
推荐指数
1
解决办法
75
查看次数

旋转轴标签

我有一个看起来像这样的图(这是著名的 Wine 数据集):

在此输入图像描述

正如您所看到的,x 轴标签重叠,因此我需要旋转。

注意!我对旋转 x 刻度不感兴趣(如此处所述,但对标签文本(即alcoholmalic_acid等)感兴趣。

创建绘图的逻辑如下:我使用 创建一个网格axd = fig.subplot_mosaic(...),然后为底部绘图设置标签axd[...].set_xlabel("something")set_xlabel如果能接受一个参数那就太好了rotation,但不幸的是事实并非如此。

python matplotlib subplot axis-labels seaborn

3
推荐指数
1
解决办法
4000
查看次数

如何将包含嵌套数组的压缩对象展平到列表中?

我有一个像这样的压缩对象:

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)

但是当我打印时数组仍然存在。

我究竟做错了什么?

python numpy list python-3.x

2
推荐指数
1
解决办法
1959
查看次数

如何将numpy数组的数组重新整形为单行

我有一个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)

文件 是不是很友好

python arrays numpy

0
推荐指数
1
解决办法
1647
查看次数