如果我做一个
bar([1 2 3 4 5;2 3 4 5 1], 'stacked')
Run Code Online (Sandbox Code Playgroud)
我得到了与我的数据的两行相对应的两条堆叠值 - 正如我所料:

我希望能够类似地绘制只有一个条形的堆积条形图,但是如果我这样尝试
bar([1 2 3 4 5], 'stacked')
Run Code Online (Sandbox Code Playgroud)
那么如何制作单条堆积条形图呢?
我有一段代码切片2D NumPy数组并返回结果(子)数组.在某些情况下,切片仅索引一个元素,在这种情况下,结果是一个元素数组:
>>> sub_array = orig_array[indices_h, indices_w]
>>> sub_array.shape
(1,)
Run Code Online (Sandbox Code Playgroud)
如何以一般方式强制此数组为二维?即:
>>> sub_array.shape
(1,1)
Run Code Online (Sandbox Code Playgroud)
我知道这很sub_array.reshape(1,1)有效,但我希望能够将其应用到sub_array一般而不用担心其中的元素数量.换句话说,我想组成一个(轻量级)操作,将shape-(1,)数组转换为shape-(1,1)数组,将形状(2,2)数组转换为一个形状 - (2,2)阵列等我可以做一个函数:
def twodimensionalise(input_array):
if input_array.shape == (1,):
return input_array.reshape(1,1)
else:
return input_array
Run Code Online (Sandbox Code Playgroud)
这是我能得到的最好的,还是NumPy有更"本土"的东西?
加成:
正如/sf/answers/2218893001/中指出的那样,我的索引编写错误.我真的很想做:
sub_array = orig_array[indices_h][:, indices_w]
Run Code Online (Sandbox Code Playgroud)
当只有一个条目indices_h,但将其与np.atleast_2d另一个答案中的建议组合时,这不起作用,我到达:
sub_array = np.atleast_2d(orig_array[indices_h])[:, indices_w]
Run Code Online (Sandbox Code Playgroud) 我的Pandas DataFrame df看起来像这样:
parameter1 parameter2 value
1 1 0.1
2 0.2
2 1 0.6
2 0.3
Run Code Online (Sandbox Code Playgroud)
value是groupby(['parameter1','parameter2']).mean()另一个的结果DataFrame。现在,我可以找到使用的value每个值的最大值parameter1
df.max(level='parameter1')
Run Code Online (Sandbox Code Playgroud)
但是,我需要找到parameter2此最大值的对应值。似乎df.idxmax()不支持level=,所以我该怎么做呢?
当我使用Matplotlib绘制数据时,默认情况下会将轴绘制为框图框.比方说,我在轴的限度内绘制数据-2 < x < 2和-2 < y < 2,但我想通过原点绘制轴线该地块区域内,最好有蜱和刻度标记沿着这些轴线-不沿外框架.
假设我有如下数据结构:
[[ tuple11,
tuple12,
... ],
[ tuple21,
tuple22,
... ],
...]
Run Code Online (Sandbox Code Playgroud)
也就是说,外部列表可以包含任意数量的元素,每个元素(列表)可以包含任意数量的元素(元组).我怎样才能将其转换为:
[[ tuple11,
tuple21,
... ],
[ tuple12,
tuple22,
... ],
... ]
Run Code Online (Sandbox Code Playgroud)
我有以下解决方案在外部列表中的两个元素工作,但我无法弄清楚如何概括它:
map(lambda x, y: [x, y], *the_list)
Run Code Online (Sandbox Code Playgroud)
添加:
只是为了增加一些细节,上面的每个元组实际上都是两个元组的元组np.array.
如果我开始使用以下数据结构:
[[(array([111, 111]), array([121, 121])),
(array([112, 112]), array([122, 122])),
(array([131, 131]), array([141, 141])),
(array([132, 132]), array([142, 142]))],
[(array([211, 211]), array([221, 221])),
(array([212, 212]), array([222, 222])),
(array([231, 231]), array([241, 241])),
(array([232, 232]), array([242, 242]))]]
Run Code Online (Sandbox Code Playgroud)
我需要把它变成:
[[(array([111, 111]), array([121, 121])),
(array([211, 211]), array([221, 221]))],
[(array([112, 112]), …Run Code Online (Sandbox Code Playgroud) 有没有办法添加 lisp 代码,最好是在注释中,由 Emacs 在加载该文件时执行?
具体来说,我想为特定的 LaTeX 文件关闭自动填充模式。我知道这样的事情可以通过模式挂钩来完成,但我不想对所有 LaTeX 文件都这样做。
Emacs 的 AUCTeX 在已编辑文件末尾的注释中存储特定于文件的设置的方式使我怀疑可以使用一般的 lisp 片段来完成类似的操作,例如(auto-fill-mode 0)在 LaTeX 开头或结尾的注释中文件。
我正在尝试使用最小化复杂(向量)变量的功能scipy.optimize。到目前为止,我的结果表明这可能是不可能的。为了研究这个问题,我实现了一个简单的示例-最小化带有偏移量的复数向量的2范数:
import numpy as np
from scipy.optimize import fmin
def fun(x):
return np.linalg.norm(x - 1j * np.ones(2), 2)
sol = fmin(fun, x0=np.ones(2) + 0j)
Run Code Online (Sandbox Code Playgroud)
输出是
Optimization terminated successfully.
Current function value: 2.000000
Iterations: 38
Function evaluations: 69
>>> sol
array([-2.10235293e-05, 2.54845649e-05])
Run Code Online (Sandbox Code Playgroud)
显然,解决方案应该是
array([0.+1.j, 0.+1.j])
Run Code Online (Sandbox Code Playgroud)
对此结果感到失望,我也尝试过scipy.optimize.minimize:
from scipy.optimize import minimize
def fun(x):
return np.linalg.norm(x - 1j * np.ones(2), 1)
sol = minimize(fun, x0=np.ones(2) + 0j)
Run Code Online (Sandbox Code Playgroud)
输出是
>>> sol
fun: 2.0
hess_inv: array([[ 9.99997339e-01, -2.66135332e-06],
[-2.66135332e-06, 9.99997339e-01]])
jac: …Run Code Online (Sandbox Code Playgroud) 我正在寻找固定键,例如 a namedtuple,但可变值,例如 a dict。我可能会struct在C中使用a。Python中有这样的数据结构吗?