python连续输出每个数字占4列_Python中的大量数字数组的高效存储器

我需要使用numpy排序一个非常大的基因组数据集.我有一个26亿个浮标数组,维数=(868940742,3),在我的机器上占用大约20GB的内存,只是坐在那里.我有一个早期的2015 13’MacBook Pro与16GB内存,500GB固态高清和3.1 GHz英特尔i7处理器.只是加载数组溢出到虚拟内存,但不是我的机器受损的程度,或者我不得不停止我所做的一切.

我从22个较小的(N,2)子阵列中逐步构建这个非常大的阵列.

函数FUN_1使用我称之为sub_arr的22个子阵列中的每一个生成2个新的(N,1)数组.

FUN_1的第一个输出是通过对数组b = array([X,F(X)])上的sub_arr [:,0]的值进行内插生成的,第二个输出是通过将sub_arr [:, 0]放入使用数组的bin中生成的r =数组([X,BIN(X)]).我分别称这些输出为b_arr和rate_arr.该函数返回一个3元组的(N,1)数组:

import numpy as np

def FUN_1(sub_arr):

"""interpolate b values and rates based on position in sub_arr"""

b = np.load(bfile)

r = np.load(rfile)

b_arr = np.interp(sub_arr[:,0], b[:,0], b[:,1])

rate_arr = np.searchsorted(r[:,0], sub_arr[:,0]) # HUGE efficiency gain over np.digitize...

return r[rate_r, 1], b_arr, sub_arr[:,1]

我在一个for循环中调用函数22次,并填充预先分配的零数组full_arr = nu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值