NumPy是使用Python进行科学计算的基础包。它包含其他内容: 一个强大的N维数组对象 复杂的(广播)功能 用于集成C / C ++和Fortran代码的工具 有用的线性代数,傅立叶变换和随机数功能
我需要知道压缩方法的效用是什么以及如何进行数字转换?
from pylab import *
from time import time,sleep
import sys
import argparse
from math import *
import numpy as np
x = np.array([1,2,3,4,5,9,6,97987978978977987987897987987])
y=fromstring(x,'uint16')
time=compress(y&0x8000==1,y)
print(time)
print(x)
该程序如何运作
答案 0 :(得分:1)
您实际上正在调用numpy
函数compress(我相信pylab
的命名空间。)
这是一种索引功能,允许您返回数组的选定索引。查看文档中的示例,您将看到:
>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.compress([0, 1], a, axis=0)
array([[3, 4]])
考虑到轴是0(行),返回是第二行(我相信条件等于[False, True]
)。
在您的特定情况下,您似乎只是在以下情况下提交条件才能返回y
:
[32768 0 0 0 32768 0 0 0 32768 0 0 0
32768 0 0 0 32768 0 0 0 32768 0 0 0
32768 0 0 0 0 0 0 0]
==1
,只有你能说出其重要性(y&0x8000
)。
编辑:使用您自己的示例,我会打印您的条件,time
,并创建True
值的新条件时间:
import numpy as np
from pylab import *
x = np.array([1,2,3,4,5,9,6,97987978978977987987897987987])
y=fromstring(x,'uint16')
print('Your condition: ',y&0x8000==1)
time=compress(y&0x8000==1,y)
print('Your test: ',time)
time=compress(y&0x8000==0,y)
print('Test with True values in condition: ',time)
返回:
Your condition: [False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False]
Your test: []
Test with True values in condition: [7652 0 0 7652 0 0 7652 0 0 7652 0 0 7652 0 0
7652 0 0 7652 0 0 8920 1114 0 0]