我正在尝试创建已排序的numpy数组的差异,以便如果我记录第一行的值和差异,则可以重新创建原始表,但存储的数据较少.

因此,这是表格的示例:

my_array = numpy.array([(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, 1),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 34),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 35),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36)

],'uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8')

在运行numpy.diff(my_array)之后,我会期望像这样:

[(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 32),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)

]

Note: The data above comes from the first & last three rows of the

‘real’ data, which is much much larger. With the full dataset, most of the

rows after a diff would be 0,0,0,0,0,0,0,0,0,0,0,0,1 — which can a)

be stored in a much smaller struct, and b) will compress fantastically well on disk since most rows contain very similar data.

I should probably point out that the reason I have a whole bunch of uint8’s in the first place, is because I needed to store an array of extremely large numbers, in the smallest amount of memory possible. The largest number was 185439173519100986733232011757860, which is too big for uint64. In fact, the smallest number of bits to store it would be 108 bits, or 14 bytes (to the nearest byte). So to fit these large numbers into numpy, i use the following two functions:

def large_number_to_numpy(number,columns):

return tuple((number >> (8*x)) & 255 for x in range(columns-1,-1,-1))

def numpy_to_large_number(numbers):

return sum([y << (8*x) for x,y in enumerate(numbers[::-1])])

Which is used like this:

>>> large_number_to_numpy(185439173519100986733232011757860L,14)

(9L, 36L, 146L, 73L, 36L, 146L, 73L, 36L, 146L, 73L, 36L, 146L, 73L, 36L)

numpy_to_large_number((9L, 36L, 146L, 73L, 36L, 146L, 73L, 36L, 146L, 73L, 36L, 146L, 73L, 36L))

185439173519100986733232011757860L

With the array created like this:

my_array = numpy.zeros(TOTAL_ROWS,','.join(14*['uint8']))

And then populated with:

my_array[x] = large_number_to_numpy(large_number,14)

但是我得到了这个:

>>> my_array

array([(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, 1),

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 34),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 35),

(9, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36, 146, 73, 36)],

dtype=[('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'u1'), ('f4', 'u1'), ('f5', 'u1'), ('f6', 'u1'), ('f7', 'u1'), ('f8', 'u1'), ('f9', 'u1'), ('f10', 'u1'), ('f11', 'u1'), ('f12', 'u1'), ('f13', 'u1')])

>>> numpy.diff(my_array)

Traceback (most recent call last):

File "", line 1, in

File "/usr/local/lib/python2.7/site-packages/numpy/lib/function_base.py", line 1567, in diff

return a[slice1]-a[slice2]

TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype([('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'u1'), ('f4', 'u1'), ('f5', 'u1'), ('f6', 'u1'), ('f7', 'u1'), ('f8', 'u1'), ('f9', 'u1'), ('f10', 'u1'), ('f11', 'u1'), ('f12', 'u1'), ('f13', 'u1')]) dtype([('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'u1'), ('f4', 'u1'), ('f5', 'u1'), ('f6', 'u1'), ('f7', 'u1'), ('f8', 'u1'), ('f9', 'u1'), ('f10', 'u1'), ('f11', 'u1'), ('f12', 'u1'), ('f13', 'u1')]) dtype([('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'u1'), ('f4', 'u1'), ('f5', 'u1'), ('f6', 'u1'), ('f7', 'u1'), ('f8', 'u1'), ('f9', 'u1'), ('f10', 'u1'), ('f11', 'u1'), ('f12', 'u1'), ('f13', 'u1')])

python中的diff_python-Numpy和diff()相关推荐

  1. python 中arange函数_浅谈Python中range与Numpy中arange的比较

    本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明. 1. range与arange的比较 (1)相同点:A.参数的可选性. ...

  2. python中np zeros_Python numpy.zeros方法代码示例

    本文整理汇总了Python中numpy.zeros方法的典型用法代码示例.如果您正苦于以下问题:Python numpy.zeros方法的具体用法?Python numpy.zeros怎么用?Pyth ...

  3. python中数组(numpy.array)的基本操作【转载】

    为什么要用numpy Python中提供了list容器,可以当作数组使用.但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3].就需要三个指针和三 ...

  4. python中range和arange的区别_浅谈Python中range与Numpy中arange的比较

    本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明. 1. range与arange的比较 (1)相同点:A.参数的可选性. ...

  5. Python中矩阵库Numpy基本操作

    NumPy是一个关于矩阵运算的库,熟悉Matlab的都应该清楚,这个库就是让python能够进行矩阵话的操作,而不用去写循环操作. 下面对numpy中的操作进行总结.  numpy包含两种基本的数据类 ...

  6. python中找出numpy array数组的最值及其索引

    在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where ...

  7. python中list和numpy的array的转换

    不确定数组的大小,但是迭代存进去的tensor的shape是一样的,那么可以考虑使用下面的方法. 其实我的应用是想申请一个大小不固定的数组,然后每个循环往里面存一次数,最后用于绘制2维图像. 可以使用 ...

  8. [转载] 使用python 中的numpy创建数组

    参考链接: Numpy 创建数组 使用nump创建数组的方法: (1)导入numpy模块: import numpy as np 注意:如果是纯python,默认是不安装numpy库的,需要在pyth ...

  9. python中numpy是什么意思_python中numpy是什么

    python中numpy.argmin什么意思 numpy.argmin表示最小值在数组中所在的位置 a = [[1, 4, 2], [3, 4, 5]] b = np.argmin(a) 结果:0 ...

  10. python基础代码库-Python基础数据处理库-NumPy

    最近更新:2017-07-19 NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SKlearn就需要NumPy的支持.掌握NumPy的基础 ...

最新文章

  1. PMcaff-干货| 产品经理应该了解的服务设计那些事儿
  2. 从安全视角来看LXD容器管理程序
  3. r语言清除变量_R语言(1)初识与数据结构
  4. 棒棒糖球球机器人_球球大作战刷棒棒糖_球球大作战刷龙蛋攻略
  5. 蚂蚁Service Mesh大规模落地实践与展望
  6. Android 进程间通信——AIDL
  7. python基础语法(一)
  8. C# 实现 MD5 和 SHA1 加密算法_哈希函数 hush
  9. 计算机管理服务无法显示,打印机属性无法打开,始终显示: 无法显示计算机属性. 后台打印程序服务未运行....
  10. Windows exe文件如何提取图标
  11. Python AngryBirds完整代码+讲解
  12. SD/eMMC初始化流程、读写流程(dwc mshc)
  13. 米思齐呼吸灯与可调节灯实验
  14. Web网页设计-盒子模型
  15. P95、P99.9百分位数值——服务响应时间的重要衡量指标
  16. XAML 创建浏览器应用程序
  17. java入门(3)——简易绘图板
  18. mirai 高效率 QQ 机器人框架
  19. trainging contest#2(2011成都现场赛)D BY bly
  20. 浅谈web cache的简单原理

热门文章

  1. 20172307 结对编程项目-四则运算 第二周 阶段总结
  2. 人工智能抢80万工人的饭碗,真的会失业吗?但是有新的转机
  3. 书写神器——markdown
  4. 《C和C++代码精粹》——1.8 标准流
  5. zoj 2709 Lottery 组合数,概率,贪心 (8-F)
  6. shell入门基础必备
  7. Oracle配置方面问题收集
  8. Python pip安装命令
  9. 【翻译】QEMU内部机制:顶层概览
  10. jenkins 添加 k8s 云