小编Div*_*kar的帖子

比较BSXFUN和REPMAT

之前在比较bsxfunrepmat表现之间提出的问题很少.

在这篇文章中,我试图调查两者之间的性能数据bsxfunrepmat覆盖所有bsxfun内置函数,从而为它提供更广泛的视角,因为这两者都提供了良好的矢量化解决方案.

具体来说,我对这篇文章的问题是:

  1. 各种内置操作如何bsxfunrepmat等效执行?bsxfun支持浮点运算一样@plus,@minus,@times等,并且还像关系和逻辑运算@ge,@and等等.所以,是否有特定的内置插件,会给我明显的加速与bsxfun比使用他们的repmat等价物?

  2. 罗兰在她blog post已经基准repmatbsxfun具有定时@() A - repmat(mean(A),size(A,1),1)@() bsxfun(@minus,A,mean(A))分别.如果我需要涵盖所有内置函数的基准测试,我可以使用一些其他可用于浮点,关系和逻辑运算的比较模型吗?

performance benchmarking matlab vectorization bsxfun

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

混淆数组中每行的非零元素--Python/NumPy

我有一个相对稀疏的数组,我想遍历每一行并只调整非零元素.

示例输入:

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

示例输出:

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

注意零如何改变位置.

要对每行中的所有元素(包括零)进行洗牌,我可以这样做:

for i in range(len(X)):
    np.random.shuffle(X[i, :])
Run Code Online (Sandbox Code Playgroud)

我试图做的是这样的:

for i in range(len(X)):
    np.random.shuffle(X[i, np.nonzero(X[i, :])])
Run Code Online (Sandbox Code Playgroud)

但它没有效果.我注意到返回类型与X[i, np.nonzero(X[i, :])]原因不同X[i, :].

In[30]: X[i, np.nonzero(X[i, :])]
Out[30]: array([[23,  5, 29, 11, 17]])

In[31]: X[i, :]
Out[31]: array([23,  5, 29, 11, 17])
Run Code Online (Sandbox Code Playgroud)

python numpy shuffle vectorization

35
推荐指数
4
解决办法
1115
查看次数

numpy中"less_equal"中遇到"无效值"的原因可能是什么

我经历了RuntimeWarning

 RuntimeWarning: invalid value encountered in less_equal
Run Code Online (Sandbox Code Playgroud)

由我的这行代码生成:

center_dists[j] <= center_dists[i]
Run Code Online (Sandbox Code Playgroud)

两个center_dists[j]center_dists[i]是numpy的阵列

这个警告可能是什么原因?

python arrays numpy runtime

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

A == 0真的比~A好吗?

问题设置简介

我在做一些涉及基准- ~AA==0double array with no NaNs,两者都转换A为逻辑阵列,所有zeros被转换为true值和休息被设置为false值.

对于基准测试,我使用了三组输入数据 -

  • 从小到小的数据 - 15:5:100
  • 中小型数据 - 50:40:1000
  • 中型到大型数据 - 200:400:3800

输入是使用A = round(rand(N)*20),其中N是从size数组中获取的参数.因此,N会从变化15 to 100 with stepsize of 5为所述第一组和类似地对于第二和第三组.请注意,我将datasize定义为N,因此元素的数量将是datasize ^ 2或N ^ 2.

基准代码

N_arr = 15:5:100; %// for very small to small sized input array
N_arr = 50:40:1000; %// for small to medium sized input array
N_arr = 200:400:3800; %// for medium …
Run Code Online (Sandbox Code Playgroud)

arrays performance benchmarking matlab logical-operators

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

裁剪中心部分的numpy图像

假设我有一个宽x和高y的numpy图像.我必须将图像的中心部分裁剪为宽度cropx和height cropy.让我们假设cropx和cropy是正非零整数并且小于相应的图像大小.将切片应用于输出图像的最佳方法是什么?

python numpy image crop image-processing

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

查找另一个数组中一个数组的匹配索引

我有两个numpy数组,A和B.一个包含唯一值,B是A的子数组.现在我正在寻找一种方法来获得B中B值的索引.

例如:

A = np.array([1,2,3,4,5,6,7,8,9,10])
B = np.array([1,7,10])
# I need a function fun() that:
fun(A,B)
>> 0,6,9
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

重复数组元素的副本:在MATLAB中运行长度解码

我正在尝试使用'values'数组和'counter'数组将多个值插入到数组中.例如,如果:

a=[1,3,2,5]
b=[2,2,1,3]
Run Code Online (Sandbox Code Playgroud)

我想要一些功能的输出

c=somefunction(a,b)
Run Code Online (Sandbox Code Playgroud)

成为

c=[1,1,3,3,2,5,5,5]
Run Code Online (Sandbox Code Playgroud)

其中a(1)重复b(1)次,a(2)重复b(2)次等等...

MATLAB中是否有内置函数来执行此操作?如果可能的话,我想避免使用for循环.我尝试过'repmat()'和'kron()'的变体无济于事.

这基本上是Run-length encoding.

arrays matlab vectorization repeat run-length-encoding

16
推荐指数
4
解决办法
4099
查看次数

如何切割numpy字符串数组的每个元素?

Numpy有一些非常有用的字符串操作,它们可以对通常的Python字符串操作进行矢量化.

与这些操作相比pandas.str,numpy strings模块似乎缺少一个非常重要的模块:能够切割数组中的每个字符串.例如,

a = numpy.array(['hello', 'how', 'are', 'you'])
numpy.char.sliceStr(a, slice(1, 3))
>>> numpy.array(['el', 'ow', 're' 'ou'])
Run Code Online (Sandbox Code Playgroud)

我是否错过了具有此功能的模块中的一些明显方法?否则,有一种快速的矢量化方式来实现这一目标吗?

python arrays string numpy slice

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

在pandas数据帧中对列重复进行分组

现在有很多类似的问题,但大多数都回答了如何删除重复的列.但是,我想知道如何创建元组列表,其中每个元组包含重复列的列名.我假设每列都有一个唯一的名称.只是为了进一步说明我的问题:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [2, 4, 2, 1, 9],
                   'C': [1, 2, 3, 4, 5],'D': [2, 4, 2, 1, 9],
                   'E': [3, 4, 2, 1, 2],'F': [1, 1, 1, 1, 1]},
                   index = ['a1', 'a2', 'a3', 'a4', 'a5'])
Run Code Online (Sandbox Code Playgroud)

然后我想要输出:

[('A', 'C'), ('B', 'D')]
Run Code Online (Sandbox Code Playgroud)

如果你今天感觉很棒,那么也可以将相同的问题扩展到行.如何获取每个元组包含重复行的元组列表.

python numpy duplicates dataframe pandas

16
推荐指数
3
解决办法
1555
查看次数

独立滚动矩阵的行

我有一个矩阵(准确地说是2d numpy ndarray):

A = np.array([[4, 0, 0],
              [1, 2, 3],
              [0, 0, 5]])
Run Code Online (Sandbox Code Playgroud)

我想A根据另一个数组中的滚动值独立滚动每一行:

r = np.array([2, 0, -1])
Run Code Online (Sandbox Code Playgroud)

也就是说,我想这样做:

print np.array([np.roll(row, x) for row,x in zip(A, r)])

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

有没有办法有效地做到这一点?也许使用花哨的索引技巧?

python performance numpy

15
推荐指数
3
解决办法
2575
查看次数