小编use*_*942的帖子

numpy数组到删除了尾随零的字符串

问题:我的方法是将numpy数组转换为具有特定小数位数的numpy字符串数组,并且尾随零删除了"最佳"方式?

import numpy as np
x = np.array([1.12345, 1.2, 0.1, 0, 1.230000])
print np.core.defchararray.rstrip(np.char.mod('%.4f', x), '0')
Run Code Online (Sandbox Code Playgroud)

输出:

['1.1235' '1.2' '0.1' '0.' '1.23']
Run Code Online (Sandbox Code Playgroud)

这是理想的结果.(我对舍入问题没问题)

两个函数'rstrip'和'mod'都是numpy函数,这意味着这很快但是有一种方法可以通过一个内置的numpy函数实现这个功能吗?(即'mod'有一个我找不到的选项吗?)它会节省两次返回副本的开销,这对于非常大的数组来说是慢的.

谢谢!

string format numpy

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

python numpy mask意味着性能

好吧,经过一番搜索,我似乎找不到直接解决这个问题的SO问题.我已经研究了蒙面阵列,虽然它们看起来很酷,但我不确定它们是否是我需要的.

考虑2个numpy数组:

zone_data是一个2维的numpy数组,具有相同值的元素块.这是我的"区域".

value_data 是一个2维numpy数组(zone_data的确切形状),具有任意值.

我寻找一个与zone_data/value_data相同形状的numpy数组,其中每个区域的平均值代替区号.

例子......在ascii艺术形式.

zone_data (4个不同的区域):

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

value_data:

1, 2, 3, 6
3, 0, 2, 5
1, 1, 1, 0
2, 4, 2, 1
Run Code Online (Sandbox Code Playgroud)

我的结果,称之为result_data:

1.5, 1.5, 4.0, 4.0
1.5, 1.5, 4.0, 4.0
2.0, 2.0, 1.0, 1.0
2.0, 2.0, 1.0, 1.0
Run Code Online (Sandbox Code Playgroud)

这是我的代码.只要给我一个完美的结果,它工作得很好.

result_data = np.zeros(zone_data.shape)
for i in np.unique(zone_data):
    result_data[zone_data == i] = np.mean(value_data[zone_data == i])
Run Code Online (Sandbox Code Playgroud)

我的数组很大,我的代码片段需要几秒钟.我认为我有一个知识差距,没有任何有用的东西.循环方面需要委托给库或某些东西...... aarg! …

python arrays performance numpy masking

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

标签 统计

numpy ×2

arrays ×1

format ×1

masking ×1

performance ×1

python ×1

string ×1