- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
观察:
In [1]: import numpy as np
In [2]: x = np.array([1, 2, 3])
In [3]: np.vstack([x, x])
Out[3]:
array([[1, 2, 3],
[1, 2, 3]])
In [4]: np.vstack(np.broadcast(x, x))
Out[4]:
array([[1, 1],
[2, 2],
[3, 3]])
column_stack
和 row_stack
类似(hstack
在这种情况下表现不同,但在与广播一起使用时也不同)。为什么?
我追求的是其背后的逻辑,而不是找到一种“修复”这种行为的方法(我对此很好,只是不直观)。
最佳答案
np.broadcast
返回一个迭代器对象的实例,该实例描述如何数组应该一起广播。1除其他外,它描述结果数组的形状和维数。
至关重要的是,当您在 Python 中实际迭代这个对象时,您会从每个输入数组中取回元素的元组:
>>> b = np.broadcast(x, x)
>>> b.shape
(3,)
>>> b.ndim
1
>>> list(b)
[(1, 1), (2, 2), (3, 3)]
这告诉我们,如果我们对数组执行实际操作(例如,x+x
),NumPy 将返回形状为 (3,)
的数组,一维并组合元组中的元素以生成最终数组中的值(例如,它将执行 1+1
、2+2
、3+3
用于添加)。
如果深入了解 vstack
的源代码,您会发现 all it does就是要保证给它的iterable的元素至少是二维的,然后沿着轴0把它们堆叠起来。
在 b = np.broadcast(x, x)
的情况下,这意味着我们得到以下要堆叠的数组:
>>> [np.atleast_2d(_m) for _m in b]
[array([[1, 1]]), array([[2, 2]]), array([[3, 3]])]
然后将这三个小阵列垂直堆叠,产生您记下的输出。
1 不同维度的数组如何并行迭代是 NumPy 广播工作原理的核心。大部分代码可以在 iterators.c 中找到.可以在 Beautiful Code 中找到由 Travis Oliphant 自己编写的 NumPy 多维迭代器的有趣概述。书。
关于python - 为什么 numpy.broadcast "transpose"vstack 和类似函数的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253211/
import numpy as np import matplotlib.pyplot as plt import scipy.linalg as la A = np.arra
在没有指定轴的情况下,numpy 的 np.transpose(matrix) 和 np.matrix.transpose() 在二维矩阵上是否存在功能差异? 另外,有人可以尝试直观地解释轴规范如何工
我想让公式数组函数更容易 我写了一些代码,但它没有像我预期的那样插入我的复制范围: Sub copy_link() Dim copyrange As Range Dim pasterange As R
我有一张 table ,看起来像这样: +---+---+---+---+---+---+ | | a | b | c | d | e | +---+---+---+---+---+---+ |
我正在尝试进行某种反向转置,其中 ID(ISIN) 变得重复,但特征“周期”定义时间段,并且值特征从 3 个特征变为同一特征。如何在Python中从dfs到dfs2? dfs = pd.DataFra
Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环。 1.首先数组转置(T) 创建二维数组data如下: 进
我有一个因子变量,我想检索每个级别的计数。使用 summary() 函数很容易: > h hf summary(hf) (142,147] (147,153] (153,158] (158,163
想知道是否有人可以帮我解决这个问题 使用 VBA,我设置了一个宏,它首先将数据透视表转换到另一个工作表中,然后自动将数据修改为一个整洁的小列表,供用户稍后在数据库中设置。 现在,在第一次为数据透视表构
np.transpose 的时间复杂度是多少? 在我看来,它在内部循环了两个 for 循环,这意味着它应该具有 O(n2) 复杂度,但有人可以确认吗? 另外,有什么办法可以降低矩阵转置的时间复杂度 最
我想定义一个 TS 函数来将对象转置为数组,例如: const original = { value: [1, 2, 3], label: ["one", "two", "three
我正在使用 WorksheetFunction.Transpose在 VBA 中将混合日期/字符串的一维数组转换为二维数组以写入工作表。 将我的 Windows 区域设置设置为 DMY ,被写回的日期
我需要在列中的两个文本字符串之间复制数字,将其“转置”到第一个文本字符串旁边的列,然后重复该列的其余部分。数据集有数百行。 “对齐”(例如放置 NA 来纠正数字位置)不是必需的,转置就足够了。 输入:
我有一个带有 ID 列和一些功能列的 DataFrame。我想查看每个列值有多少个唯一 ID 的描述。 以下代码有效,但我想知道是否有比 to_frame().unstack().unstack()
我不确定“转置”在这里是否是正确的术语,但我希望使用 jq 转置一个二维对象,如下所示: [ { "name": "A", "keys": ["k1", "k2
运行 100,000 次迭代的模拟后,我尝试将每次迭代的值转储到列中。这是代码的要点: Sub test() Application.ScreenUpdating = False Dim totalg
我需要在列中的两个文本字符串之间复制数字,将其“转置”到第一个文本字符串旁边的列,然后重复该列的其余部分。数据集有数百行。 “对齐”(例如放置 NA 来纠正数字位置)不是必需的,转置就足够了。 输入:
我有一个向量列表: asdf = list(c(1, 2, 3, 4, 5), c(10, 20, 30, 40, 50)) 现在我想“转置”它,即获得5对的列表而不是5对的列表。 更具体地说,我希望
我有一个如下所示的数据集,我需要单行中每个类别的所有不同权重和计数 Sample_data category weights 1 aa 3.2 2 aa 2.2
我在 test.cpp 文件中得到了以下代码来实现: cout << "Case 2: the non-static Transpose function" << endl; { double
我想创建一个程序来创建具有随机字符的“.txt”文件,但可以创建转置"file"。接下来,我按照我的意愿添加了两个“.txt”文件的示例。 文件1 A|B|C|D|E|F|G| H|I|J|K|L|M
我是一名优秀的程序员,十分优秀!