标签: array-broadcasting

查找单个列的最大值/最小值

我是使用 Python 进行数据分析的初学者,并坚持以下几点:

我想使用广播/矢量化方法从单个列 (pandas.dataframe) 中找到最大值。

我的数据框的快照如下:在此处输入图像描述

python pandas array-broadcasting

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

稀疏向量之和:缺陷还是特征?

我最近在 MATLAB R2022a 中偶然发现了以下行为:

>> a = sparse(1,2,1)
a =
   (1,2)        1

>> b = sparse(2,1,18)
b =
   (2,1)       18

>> a+b
ans =
   (2,1)       18
   (1,2)        1
   (2,2)       19
Run Code Online (Sandbox Code Playgroud)

值为 19 的 (2,2) 元素的存在非常令人费解。直觉上,我预计会得到零(无元素)或错误,表明向量的大小不兼容。我在文档中找不到此行为的解释。

那么,这是一个错误还是一个功能?

arrays matlab matrix sparse-matrix array-broadcasting

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

我如何使用 NumPy 广播来加速这种相关性计算?

我正在尝试利用NumPy 广播和后端数组计算来显着加快此功能。不幸的是,它不能很好地扩展,所以我希望大大提高它的性能。现在代码没有正确利用广播进行计算。

我使用WGCNA 的 bicor 函数作为黄金标准,因为这是我目前所知道的最快的实现。Python 版本输出与 R 函数相同的结果。

# ==============================================================================
# Imports
# ==============================================================================
# Built-ins
import os, sys, time, multiprocessing
# 3rd party
import numpy as np
import pandas as pd
# ==============================================================================
# R Imports
# ==============================================================================
from rpy2 import robjects, rinterface
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri
pandas2ri.activate()
R = robjects.r
NULL = robjects.rinterface.NULL
rinterface.set_writeconsole_regular(None)
WGCNA = importr("WGCNA")

# Python
def _biweight_midcorrelation(a, b):
    a_median = np.median(a)
    b_median = np.median(b)

    # …
Run Code Online (Sandbox Code Playgroud)

python arrays optimization numpy array-broadcasting

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

PyTorch:如何通过广播两个不同形状的张量进行相乘

我有以下两个 PyTorch 张量 A 和 B。

A = torch.tensor(np.array([40, 42, 38]), dtype = torch.float64)

tensor([40., 42., 38.], dtype=torch.float64)
Run Code Online (Sandbox Code Playgroud)
B = torch.tensor(np.array([[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]], [[4,5,6,7,8],[4,5,6,7,8],[4,5,6,7,8],[4,5,6,7,8],[4,5,6,7,8]], [[7,8,9,10,11],[7,8,9,10,11],[7,8,9,10,11],[7,8,9,10,11],[7,8,9,10,11]]]), dtype = torch.float64)

tensor([[[ 1.,  2.,  3.,  4.,  5.],
         [ 1.,  2.,  3.,  4.,  5.],
         [ 1.,  2.,  3.,  4.,  5.],
         [ 1.,  2.,  3.,  4.,  5.],
         [ 1.,  2.,  3.,  4.,  5.]],

        [[ 4.,  5.,  6.,  7.,  8.],
         [ 4.,  5.,  6.,  7.,  8.],
         [ 4.,  5.,  6.,  7.,  8.],
         [ 4.,  5.,  6.,  7.,  8.], …
Run Code Online (Sandbox Code Playgroud)

python shapes matrix-multiplication pytorch array-broadcasting

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

如何将一个数组重复m次

我有一个数组,例如arr = [1, 2, 3, 4]、 和m = 3。我想制作一个包含m行的矩阵,重复该数组。该示例的输出将是

[[1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我尝试过

np.vstack((arr, arr, arr))
Run Code Online (Sandbox Code Playgroud)

然而,据我了解,这只有在我有效地硬核时才有效m

numpy array-broadcasting

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

仅在位置 0 处保留具有唯一值的子数组

从 Numpy nd 数组开始:

>>> arr
[
    [
        [10, 4, 5, 6, 7],
        [11, 1, 2, 3, 4],
        [11, 5, 6, 7, 8]
    ],
    [
        [12, 4, 5, 6, 7],
        [12, 1, 2, 3, 4],
        [12, 5, 6, 7, 8]
    ],
    [
        [15, 4, 5, 6, 7],
        [15, 1, 2, 3, 4],
        [15, 5, 6, 7, 8]
    ],
    [
        [13, 4, 5, 6, 7],
        [13, 1, 2, 3, 4],
        [14, 5, 6, 7, 8]
    ],
    [
        [10, 4, 5, 6, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy array-broadcasting

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

如何将一维数组转换为 3d 数组(将灰度图像转换为 rgb 格式)?

我有一个 numpy 数组格式的图像,我编写了假设 rgb 图像作为输入的代码,但我发现输入由黑白图像组成。

对于什么应该是 RGB 即 (256,256,3) 维图像,我将输入作为灰度 (256,256) 数组图像,我想将其转换为 (256,256,3)

这是我在 numpy 数组中的内容:

[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]]
(256, 256)
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:(对于上面数组中的每个值,相同元素的数组 3 次)

[[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]
  ...
  [0. 0. 0.]
  [0. 0. 0.] …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy numpy-ndarray array-broadcasting

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

Numpy 哪里有 Julia 代码的功能?

我读了答案 “什么是 Julia 相当于 numpy 的 where 函数?”。,但还没有看到答案 (ifelse) 如何为用户提供 numpy.where 的所有功能。我在下面发布了示例代码:

    A = [0.0 0.9 0.0 0.99 0.0]

    a = 1:长度(A)

    #-v- 按预期产生 [0 1.0 0 1.0 0],但如何获取索引值?
    b = ifelse.(A .- 1.0 .> -1.0, 1.0, 0 )
    #-^- 如何得到数组[0.9 0.99]?如何从数组中删除所有零?

除了使用 for 循环之外的任何解决方法将不胜感激。

python numpy where-clause julia array-broadcasting

2
推荐指数
2
解决办法
300
查看次数

Numpy 添加多个数组

有没有一种方法,以增加在单个操作(而不是总和)多个阵列在一起吗?显然,np.sum并且np.add是不同的操作,但是,我现在正在努力解决的问题是np.add一次只需要两个数组。我可以利用

output = 0
for arr in arr_list:
    output = output + array
Run Code Online (Sandbox Code Playgroud)

或者

output = 0
for arr in arr_list:
    output = np.add(output, array)
Run Code Online (Sandbox Code Playgroud)

是的,这是可行的。但是,如果我可以简单地做一些变体就好了

output = np.add_multiple(arr_list)
Run Code Online (Sandbox Code Playgroud)

这存在吗?

编辑:我最初没有说清楚。我特别要求,它的功能要求一个阵列被构建阵列,如我的数组相等尺寸的不和要求的广播,例如:

a = np.arange(3).reshape(1,3)
b = np.arange(9).reshape(3,3)

a, b = a[:,:,None,None], b[None,None,:,:]
Run Code Online (Sandbox Code Playgroud)

这些工作:

a + b        # Works
np.add(a, b) # Works
Run Code Online (Sandbox Code Playgroud)

这些没有,并以相同的例外失败:

np.sum([a, b], axis = 0)
np.add.reduce([a, b])

Traceback (most recent call last):
  File …
Run Code Online (Sandbox Code Playgroud)

python numpy array-broadcasting

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

Julia:跨矩阵行广播`findfirst()`

我想在满足某个条件的矩阵的每一行中找到第一个值的索引。我想弄清楚如何在不使用数组推导式的情况下做到这一点。

这就是我将如何使用数组理解来做到这一点:

# let's say we want to find the first column index, per row, where a number in that row is below some threshold.

threshold = 0.5;
data = randn(50,100);

first_threshold_crossings = [findfirst(data[i,:]<threshold) for i in 1:size(data,1)];

Run Code Online (Sandbox Code Playgroud)

生成一个索引列表,告诉您每行的位置(按列)从左到右首先下降到阈值以下的值。

你能想象这样做的任何更快的方法吗?

broadcast multidimensional-array logical-operators julia array-broadcasting

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