我有一个像这样的麻木数组:
candidates =
array([[1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0],
[0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1],
[1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0]])
我不明白候选人有什么区别[0]
:
candidates[0] =
array([1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0]
candidates[0].shape = (34,)
候选[0:1]
:
candidates[0:1] =
array([[1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0]])
candidates[0:1].shape = (1, 34)
因为我认为两者应该给出完全相同的结果?我的意思是后面的候选[0:1]
应该只代表第一个元素,对吗?那么,两者到底有什么区别?
不。不同之处在于阵列的形状。在第一个实例中,您有一个 1 维数组。在第二个维度中,您有一个 2 维数组。
您可以通过测试数组的形状
属性来进行测试:
print(np.array([[1, 0]]).shape)
(1, 2)
print(np.array([1, 0]).shape)
(2,)
通过使用项目列表对数组进行切片,例如[0:1]
,您的结果将增加一个维度。请注意,这与使用范围无关;当您使用包含1个元素的列表作为索引器时也是如此:
x = np.array([[0, 1], [2, 3]])
print(x[[0]].shape)
# (1, 2)
不同之处在于维数:候选[0:1]
将返回一个二维数组,而候选[0]
将返回一个一维数组:
>>> candidates[0:1].ndim
2
>>> candidates[0].ndim
1
您还可以通过候选项的输出来“查看”维度[0:1]
:注意数组周围的方括号数吗?这些可以是数组维度的提示
在Python中,[0]
是索引-它返回第一个元素,而[0:1]
是切片-它返回所有前1个元素的集合。
用一个普通的旧列表可能更容易看到:
>>> lst = [1, 2, 3]
>>> lst[0]
1
>>> lst[0:1]
[1]
Numpy扩展了Python索引和切片,出于不同的原因,其中一些会给你一个2D结果——例如,你可以用< code>[0]作为一个“类数组”进行索引,这将作为一个索引数组工作),但是相关的基础知识在这里是相同的。对于2D numpy数组,元素是行,因此< code>candidates[0]是第一行,这是1D数组,而< code>candidates[0:1]是所有前1行的数组,这是2D数组。所以第一个有shape (34,)
,第二个有shape (1,34)
。
如果你不仔细观察,差异可能并不明显,但比较一下两者的开始:
array([1,
array([[1,
它们没有排成一行,因为第二个有两个括号,而不是一个,这是因为它是一个2D数组,而不是1D。
本文向大家介绍if(a-b <0)和if(a 相关面试题,主要包含被问及if(a-b <0)和if(a 时的应答技巧和注意事项,需要的朋友参考一下 并且可能意味着两个不同的东西。考虑以下代码: 运行时,将仅打印。发生的事情显然是错误的,但是溢出并变为,这是负面的。 话虽如此,请考虑一下数组的长度确实接近。中的代码如下所示: 确实接近,所以(是)可能溢出并变成(即负数)。然后,将 下溢 相减回正数。
我已经花了所有的努力来解决这个问题。:)我请求帮助。 为了理解: “空”-第(- “数字”——父母的位置。第一分段(- 所以 [“空”、“0”、“1”、“2”、“2”、“1”、“0”]到[“1”、“1.1”、“1.1.1”、“a”、“b”、“1.1.2”、“1.2”] “null”:第一个元素“null”-
问题内容: 和Python和有什么不一样? 我尝试环顾四周,但没有在这些线上找到具体问题。如果已经回答,则链接就足够了。 问题答案: 0和1是退出代码。 意味着干净出口,没有任何错误/问题 表示存在一些问题/错误/问题,这就是程序退出的原因。 这不是特定于Python的,非常普遍。非零退出代码被视为异常退出,有时,错误代码指示问题所在。错误代码为零表示成功退出。 这对于其他程序,shell,调用方
问题内容: public void push(E element) { if (size == elements.length) { resize(); // doubel of size } elements[size++] = element; } Java中的a 和 a或a–和–a有什么区别 谢谢 问题答案: 或是后缀运算符,表示a的值将在对表达式求值后更改。 或是前缀运算,表示a的值将在对
问题内容: 为什么以下两个语句的结果不同? 编辑: 我应该补充一点,我怀疑将“ 0”第一条语句强制转换为要比较的布尔值-这应该与“‘0’== true”完全相同,显然这是不正确的。 问题答案: 首先,为了完整性: 是的,因为是一个非空字符串,这始终计算结果为: 字符串:如果参数为空字符串(其长度为零),则结果为 false; 否则为 false 。否则结果为 true 。 现在到。 这里将进行两次