小编Bal*_*sar的帖子

如何将掩码从一个数组应用到另一个数组?

我现在已经多次读过蒙面数组文档,到处搜索并感到非常愚蠢.我无法弄清楚我的生活如何将面具从一个阵列应用到另一个阵列.

例:

import numpy as np

y = np.array([2,1,5,2])          # y axis
x = np.array([1,2,3,4])          # x axis
m = np.ma.masked_where(y>2, y)   # filter out values larger than 5
print m
[2 1 -- 2]
print np.ma.compressed(m)
[2 1 2]
Run Code Online (Sandbox Code Playgroud)

所以这很好....但要绘制这个y轴,我需要一个匹配的x轴.如何将y数组中的掩码应用于x数组?这样的事情会有意义,但会产生垃圾:

new_x = x[m.mask].copy()
new_x
array([5])
Run Code Online (Sandbox Code Playgroud)

那么,究竟是怎么做的(注意新的x数组需要是一个新的数组).

编辑:

好吧,似乎有一种方法可以做到这一点:

>>> import numpy as np
>>> x = np.array([1,2,3,4])
>>> y = np.array([2,1,5,2])
>>> m = np.ma.masked_where(y>2, y)
>>> new_x = np.ma.masked_array(x, m.mask)
>>> print np.ma.compressed(new_x)
[1 2 4]
Run Code Online (Sandbox Code Playgroud)

但那令人难以置信的凌乱!我正在努力寻找像IDL一样优雅的解决方案......

python numpy

28
推荐指数
2
解决办法
4万
查看次数

将自己的视频提供给Apple TV屏幕保护程序

在第四代Apple TV上,您可以选择自定义的json文件URL来加载除苹果之外的屏幕保护程序电影.为此,你必须进入设置,移动到约,在开启时,单击播放/暂停4次.这进入商店/频道模式,允许在选择频道模式时通过描述下载URL的中间JSON文件指定从哪里获取电影的URL.这对我有一次工作,我的一部电影下载了.但是从那时起我改变了网址,Apple TV几天没有下载任何新电影.

我有1080p版本(每部电影约600MB)和720p版本(每部电影约70MB).我的JSON文件版本位于:http://wx.inside.net/sat/ss.json,你可以在这里将它与Apple自己的版本进行比较:http://a1.phobos.apple.com/us/ r1000/000/Features/atv/AutumnResources/videos/entries.json,我觉得我的语法还行.

Apple TV一直处于永久性状态,因此可以有足够的时间下载新电影,并且电影已经可用(并且可以使用JSON文件中的URL在iPad或MBP上播放.

问题: - 有没有办法从Apple TV获得一些关于它是否已获取最新JSON文件的反馈? - 可以删除本地存储/缓存的电影以强制下载新电影吗? - 它将播放哪些电影文件有任何尺寸/质量限制吗? - 我可以以某种方式强制Apple TV重新加载屏保URL吗?

json ios apple-tv

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

JPanel占用的空间超出了它的需要.我怎么能缩小它?

更新:我收到了有关发布非工作代码的合理批评.我已经把它牢记在心,我正在用一个完整的工作示例来更新这篇文章.我也相应地更新了描述:

我有一个非常简单的java swing GUI,它的组件占用了最大Y范围组件所使用的等量垂直(Y)空间,但完全不必要.我试图使用preferredSize提示缩小那些不需要那么多垂直空间的组件,但无济于事.

基本布局很简单:有一个主窗口和三个垂直面板.布局是一个简单的GridLayout(我宁愿保持这种方式,除非有人告诉我我需要用GridLayout做不到的事).所有三个面板似乎占据相同数量的垂直空间,即使在滑块的情况下,这也是大量浪费空间.如何让每个子窗格只使用每个需要的空间?即我希望两个滑块窗口只有滑块和它们的描述一样高.

代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class test {
  public static void main(String[] arg) {
    JFrame mainWindow = new JFrame();
    JSlider slider1 = new JSlider(0,100,50);
    JSlider slider2 = new JSlider(0,100,50);

    JPanel pnlSlider1 = new JPanel();
    pnlSlider1.setLayout(new GridLayout(1,1));  // 1 row, 1 column
    pnlSlider1.add(new JLabel("Description for slider1"));
    pnlSlider1.add(slider1);

    JPanel pnlSlider2 = new JPanel();
    pnlSlider2.setLayout(new GridLayout(1,1));  // 1 row, 1 column
    pnlSlider2.add(new JLabel("Description for slider2"));
    pnlSlider2.add(slider2);

    // label should now be to the left of slider …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel layout-manager

6
推荐指数
1
解决办法
882
查看次数

C中的位移运算符优先级

C中的位移操作符没有按照我的预期运行,这无疑是我的误解,但有人可以解释发生了什么吗?

unsigned char in = 155;
unsigned char res;

res = (in << 6) >> 7;
Run Code Online (Sandbox Code Playgroud)

应该是一样的

res = in << 6;
res = res >> 7; // can also use res >>= 7;
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.

第一个结果是:

in  = 10011011
res = 01001101
Run Code Online (Sandbox Code Playgroud)

第二个(如预期的那样):

in  = 10011011
res = 00000001
Run Code Online (Sandbox Code Playgroud)

所以看起来在第一个例子中,它操作原始数据的每个班次,而不是操作第一个班次,然后在第一个结果上操作第二个班次.想法?

c operator-precedence

4
推荐指数
1
解决办法
240
查看次数

如果一个轴包含时间,如何在matplotlib中绘制箭头?

这里有些混乱:我想通过在风速(y轴)的预测时间t(x轴)绘制一系列箭头,并绘制指向风吹动方向的箭头来绘制风的预测。箭头的尺寸应为绘图高度的给定分数,例如,任意确定为绘图高度的1/15。由于该图自动缩放为列表中的最大风速,因此可以得出:

arrowlength = np.max(wind) / 15.0
Run Code Online (Sandbox Code Playgroud)

这将产生以Y图为单位的箭头长度。问题似乎是X单元在绘制时不兼容,因为我使用的是日期时间。所以matplotlib获取其短裤的扭曲,当我这样做(这是应该工作的代码,如果 x轴不是日期时间):

for x,u,v,y in zip(t, windu, windv, wind):
  xcomp = arrowlength * sin(u/v)
  ycomp = arrowlength * cos(u/v)
  arr = Arrow(x-xcomp/2, y-ycomp/2, x+xcomp/2, y+ycomp/2, edgecolor='black')
  ax.add_patch(arr)
arr.set_facecolor('b')
Run Code Online (Sandbox Code Playgroud)

当然,这是将日期时间t(分别为循环中的x)传递给Arrow函数的槽。

我想很多时候都是这样,这是一个非常笼统的问题:如何将一条线和其他注解放置到在X和Y中没有相同单位的坐标网格中?

python matplotlib

4
推荐指数
1
解决办法
2475
查看次数

sed没有按预期替代

我需要将每个\n替换成一行"\n(双引号后跟换行符).

这应该工作.但它没有任何作用.报告也没有错误.有人提出任何线索吗?

sed -i 's/\n/\"\n/' filename
Run Code Online (Sandbox Code Playgroud)

之前,该文件包含:

line 1
line 2
Run Code Online (Sandbox Code Playgroud)

之后,它包含完全相同的.

谢谢

  • 波尔特

regex sed

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

python列表理解不起作用

我有这个非常简单的问题:我需要为列表b中的每个索引将列表a中的值设置为1:

>>> a=[0, 0, 0, 0]
>>> b=[1, 3]
Run Code Online (Sandbox Code Playgroud)

那么期望的结果是:

[0, 1, 0, 1]
Run Code Online (Sandbox Code Playgroud)

优雅的解决方案,如果python值得它的盐,当然是这样的:

>>> a[b]=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not list
Run Code Online (Sandbox Code Playgroud)

但当然这不起作用......所以我尝试了以下列表推导,但它们都产生了相同的错误,就好像理解是导致它(在for上):

首先是我真正希望工作的简单版本:

>>> a[x for x in b] = 1
  File "<stdin>", line 1
    a[x for x in b] = 1
          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

然后是稍微复杂的版本:

>>> a[b[x] for x in range(0,len(b))] = 1
  File "<stdin>", line 1
    a[b[x] for x in range(0,len(b))] = …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension for-comprehension

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