GVKun编程网logo

为什么用括号和逗号索引numpy数组的行为不同?(为什么用括号和逗号索引numpy数组的行为不同)

6

关于为什么用括号和逗号索引numpy数组的行为不同?和为什么用括号和逗号索引numpy数组的行为不同的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于不起作用\给出了错误的输出为什么put

关于为什么用括号和逗号索引numpy数组的行为不同?为什么用括号和逗号索引numpy数组的行为不同的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于 不起作用 \ 给出了错误的输出为什么 putchar() 在 while 范围内的行为与在 if 子句中的行为不同?、'and' (boolean) vs '&' (bitwise) - 为什么列表与 numpy 数组的行为不同?、c# – 为什么null条件运算符对==和.Equals()的行为不同?、java – Selenium:为什么click()的行为与firefox中的行为不同?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

为什么用括号和逗号索引numpy数组的行为不同?(为什么用括号和逗号索引numpy数组的行为不同)

为什么用括号和逗号索引numpy数组的行为不同?(为什么用括号和逗号索引numpy数组的行为不同)

我倾向于用括号为numpy数组(矩阵)建立索引,但是当我想对数组(矩阵)进行切片时,我注意到我必须使用逗号表示法。为什么是这样?例如,

>>> x = numpy.array([[1, 2], [3, 4], [5, 6]])>>> xarray([[1, 2],       [3, 4],       [5, 6]])>>> x[1][1]4                 # expected behavior>>> x[1,1]4                 # expected behavior>>> x[:][1]array([3, 4])     # huh?>>> x[:,1]array([2, 4, 6])  # expected behavior

答案1

小编典典

这个:

x[:, 1]

表示“x沿第一个轴获取所有索引,但沿第二个轴仅获取索引1”。

这个:

x[:][1]

意思是“x沿第一个轴获取所有索引(所以的全部x),然后沿结果的 第一个 轴获取索引1 ”。您将应用于1错误的轴。

x[1][2]并且x[1,2]仅是等效的,因为使用整数对数组进行索引会将所有其余轴移向形状的前面,因此的第一个轴x[1]是的第二个轴x。这一点根本没有概括。您应该几乎总是使用逗号而不是多个索引步骤。

 不起作用 \ 给出了错误的输出为什么 putchar() 在 while 范围内的行为与在 if 子句中的行为不同?

 不起作用 \ 给出了错误的输出为什么 putchar() 在 while 范围内的行为与在 if 子句中的行为不同?

如何解决\b 不起作用 \\ 给出了错误的输出为什么 putchar() 在 while 范围内的行为与在 if 子句中的行为不同??

1-10。编写一个程序将其输入复制到其输出,用 \t 替换每个制表符,每个制表符 \b 退格,每个反斜杠 \。这使得制表符和退格在 明确的方式。

我试着写了几次。这是我想出来的。

#include <stdio.h>
main()
{
    int i ;
    while ((i = getchar())!= EOF){
        if (i == ''\t''){
            putchar(''\\'');
            putchar(''t'');
        }
        if (i == ''\b''){
            putchar(''\\'');
            putchar(''b'');
        }
        if (i == ''\\''){
            //putchar(''\\'');
            putchar(''\\'');
        }
        if (i != ''\t''){
        putchar(i);
        }
    }
}

你一定注意到我已经注释掉了第三个 if 子句中的 putchar。 我有三个问题。

  1. ''\b'' 字符根本不起作用。我找不到任何打印出“\b”的可能性。如何 去做吗?

  2. 第三个 if 子句中的 putchar 打印三倍的反斜杠。当被注释掉时, 它打印 2 次(根据问题的需要)。为什么..?

  3. 在第 4 个 if 子句中,putchar 工作正常。但是一旦我从 if 子句中取出它 将其打印到 While Scope(这是我的第一次尝试)。 它打印出 ''\t'' 加上实际的制表符空间然后在下一个字符之后??

为什么会这样..?是什么原因..?

//if (i != ''\t''){    
            putchar(i); -> this is inside the while scope.
            //}
output:
test*tab*this. (executing getchar)
test\t    this (executing putchar)

PS - 我不能使用 else 子句。或上述以外的任何内容。我还没有达到 else 或在书中继续。因此,我故意避免使用 else。

解决方法

没有 elsecontinue,使用辅助变量

#include <stdio.h>

int main(void) {
    int i;
    while ((i = getchar()) != EOF) {
        int processed = 0;
        if (i == ''\t'') {
            putchar(''\\'');
            putchar(''t'');
            processed = 1;
        }
        if (i == ''\b'') {
            putchar(''\\'');
            putchar(''b'');
            processed = 1;
        }
        if (i == ''\\'') {
            putchar(''\\'');
            putchar(''\\'');
            processed = 1;
        }
        if (!processed) putchar(i);
    }
    return 0;
}

$ echo -e ''backslash [\\]\ntab [\t]\nback [\b]''
backslash [\]
tab [   ]
back ]

$ echo -e ''backslash [\\]\ntab [\t]\nback [\b]'' | ./a.out
backslash [\\]
tab [\t]
back [\b]

'and' (boolean) vs '&' (bitwise) - 为什么列表与 numpy 数组的行为不同?

'and' (boolean) vs '&' (bitwise) - 为什么列表与 numpy 数组的行为不同?

什么解释了列表与 NumPy 数组上的布尔运算和按位运算的行为差异?

我对在 Python 中正确使用&vs感到困惑and,如以下示例所示。

mylist1 = [True,  True,  True, False,  True]mylist2 = [False, True, False,  True, False]>>> len(mylist1) == len(mylist2)True# ---- Example 1 ---->>> mylist1 and mylist2[False, True, False, True, False]# I would have expected [False, True, False, False, False]# ---- Example 2 ---->>> mylist1 & mylist2TypeError: unsupported operand type(s) for &: ''list'' and ''list''# Why not just like example 1?>>> import numpy as np# ---- Example 3 ---->>> np.array(mylist1) and np.array(mylist2)ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()# Why not just like Example 4?# ---- Example 4 ---->>> np.array(mylist1) & np.array(mylist2)array([False,  True, False, False, False], dtype=bool)# This is the output I was expecting!

这个答案帮助我理解这and是一个布尔运算,但&它是一个按位运算。

我阅读了按位运算以更好地理解这个概念,但我正在努力使用这些信息来理解我上面的
4 个示例。

示例 4 使我得到了我想要的输出,这很好,但我仍然对何时/如何/为什么应该使用andvs感到困惑&。为什么列表和 NumPy
数组对这些运算符的行为不同?

谁能帮助我理解布尔运算和按位运算之间的区别,以解释为什么它们以不同方式处理列表和 NumPy 数组?

答案1

小编典典

and测试两个表达式是否在逻辑上Truewhile &(当与True/False值一起使用时)测试两者是否都是True.

在 Python
中,空的内置对象通常被视为逻辑False的,而非空的内置对象是逻辑的True。这有助于常见的用例,如果列表为空,您想要做某事,如果列表不是,您想要做其他事情。请注意,这意味着列表
[False] 在逻辑上是True

>>> if [False]:...    print ''True''...True

所以在示例 1 中,第一个列表是非空的,因此在逻辑上是True,所以
的真值and与第二个列表的真值相同。(在我们的例子中,第二个列表是非空的,因此在逻辑上是True,但是识别它需要一个不必要的计算步骤。)

例如 2,列表不能有意义地以按位方式组合,因为它们可以包含任意不同的元素。可以按位组合的东西包括:真假,整数。

相比之下,NumPy 对象支持矢量化计算。也就是说,它们允许您对多条数据执行相同的操作。

示例 3 失败,因为 NumPy 数组(长度 > 1)没有真值,因为这可以防止基于向量的逻辑混淆。

示例 4 只是一个矢量化位and操作。

底线

  • 如果您不处理数组并且不执行整数的数学运算,您可能需要and.

  • 如果您有想要组合的真值向量,请使用numpywith &

c# – 为什么null条件运算符对==和.Equals()的行为不同?

c# – 为什么null条件运算符对==和.Equals()的行为不同?

我有以下代码,工作正常:

var firstChild = token.First as JProperty;
bool isHref = token.Children().Count() == 1
           && firstChild?.Name == "href";

我想使字符串比较不区分大小写,所以我将其更改为:

var firstChild = token.First as JProperty;

bool isHref = token.Children().Count() == 1
           && firstChild?.Name.Equals("href",StringComparison.OrdinalIgnoreCase);

现在编译器给了我一个错误:

Operator && cannot be applied to operands of type ‘bool’ and ‘bool?’

我可以通过合并到false来修复错误

bool isHref = token.Children().Count() == 1
         && (firstChild?.Name.Equals("href",StringComparison.OrdinalIgnoreCase) ?? false);

但我很好奇为什么编译器不喜欢第一个空条件语法.

解决方法

让我们简化一下要领.

string x = null,y = null;

// this is null.  b1 is bool?
var b1 = x?.Equals(y); 

// b2 is bool
// this is true,since the operator doesn't require non-null operands
var b2 = x == y;

基本上.Equals()需要一个非null对象来操作.这与==不同,后者是静态绑定的,不是动态调度的.

java – Selenium:为什么click()的行为与firefox中的行为不同?

java – Selenium:为什么click()的行为与firefox中的行为不同?

我有一个id的链接:

<a href="#" onclick="return false();" id="lol">

在我的测试中:

selenium.click("lol"); //when running the test,the click will just end up selecting the item,not firing off the frameworks javascript

这不会点击相同的点击! javascript是复杂框架的一部分,它会导致div弹出.这适用于Firefox.

但这确实可以解决问题:

selenium.click("lol"); //when running the test,not firing off the frameworks javascript
selenium.keyPress("lol","\\13"); //press enter key,since the click ended up selecting it

修复确实有效.但是,这里发生了什么?似乎selenium.click()!= [实际的浏览器点击事件].任何人都可以帮助阐明这些内部运作吗?

解决方法

Selenium有时不会完全模拟点击javascript hrefs.也许这是同一个问题.快速解决方法是使用selenium的mousedown和mouseup事件的组合.您还可以考虑使用selenium.fireEvent(“lol”,“click”);.尝试这些时还原.

今天的关于为什么用括号和逗号索引numpy数组的行为不同?为什么用括号和逗号索引numpy数组的行为不同的分享已经结束,谢谢您的关注,如果想了解更多关于 不起作用 \ 给出了错误的输出为什么 putchar() 在 while 范围内的行为与在 if 子句中的行为不同?、'and' (boolean) vs '&' (bitwise) - 为什么列表与 numpy 数组的行为不同?、c# – 为什么null条件运算符对==和.Equals()的行为不同?、java – Selenium:为什么click()的行为与firefox中的行为不同?的相关知识,请在本站进行查询。

本文标签: