Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不带循环的Numpy中的切片1D数组_Python_Arrays_Numpy_Vectorization_Slice - Fatal编程技术网

Python 不带循环的Numpy中的切片1D数组

Python 不带循环的Numpy中的切片1D数组,python,arrays,numpy,vectorization,slice,Python,Arrays,Numpy,Vectorization,Slice,我有一个数组x,如下所示: x=np.array(["83838374747412E61E4C202C004D004D004D020202C3CF", "8383835F6260127314A0127C078E07090705023846C59F", "83838384817E14231D700FAC09BC096808881E1C1BC68F", "8484835C535212600F860A1612B90FCF0FCF0

我有一个数组
x
,如下所示:

x=np.array(["83838374747412E61E4C202C004D004D004D020202C3CF",
            "8383835F6260127314A0127C078E07090705023846C59F",
            "83838384817E14231D700FAC09BC096808881E1C1BC68F",
            "8484835C535212600F860A1612B90FCF0FCF012A2AC6BF",
            "848484787A7A1A961BAC1E731086005D005D025408C6CF",
            "8484845050620C300D500A9313E613E613012A2A5CC4BF",
            "838383757C7CF18F02192653070D03180318080101BE6F",
            "8584845557570F090E830F4309E5080108012A2A2AC6DF",
            "85858453536B07D608B3124C102A102A1026010101C61F",
            "83838384848411A926791C162048204820484D4444C3BF"], dtype=object)
这些是串联的十六进制值,为了转换为整数,然后应用转换因子,我需要对它们进行切片。我想要一个数组,例如:

[83,83,83,84,84,84,83,85,85,83]

这相当于
x[:,0:2]
,但我不能在这个
(10,)
数组中切片。我正在尝试做一些类似于MatLab中字符数组的事情。我将在数百万行上执行此操作,这就是我试图避免循环的原因。

如果您刚好在每个十六进制值的前两个字符之后,一个选项是将数组重新编译为
'S2'
dtype

>>> x.astype('|S2')
array(['83', '83', '83', '84', '84', '84', '83', '85', '85', '83'], 
  dtype='|S2')
这个想法可以推广到从每个字符串返回第一个
n
字符

在NumPy中,字符串数组的任意切片要困难得多。关于的答案解释了为什么它不是字符串的最佳工具,但说明了可能的情况

或者,Pandas库有助于快速矢量化操作(构建在NumPy之上)。它有许多非常有用的字符串操作,使切片比普通NumPy简单得多:

>>> import pandas as pd
>>> s = pd.Series(x)
>>> s.str.slice(2, 9)
0    8383747
1    83835F6
2    8383848
3    84835C5
4    8484787
5    8484505
6    8383757
7    8484555
8    8584535
9    8383848
dtype: object

这里有一个蟒蛇式的方法

考虑你的一部分

x = "83838374747412E61E4C202C004D004D004D020202C3CF8383835F626012"
您可以将
map
join
zip
iter
组合起来使用

xArray = array(map(''.join, zip(*[iter(x)]*2)))
然后,您可以使用int的矢量化形式将十六进制值转换为整数

intHex   = vectorize(int)
xIntForm = intHex(xArray,16)
不过,我不确定
矢量化
函数的性能,它是numpy的一部分


干杯

x
数组的行之间是否有
逗号
遗漏?是的,谢谢。谢谢,这正是我在片段中寻找的谢谢!这与,;pandas系列上的intHex=vectorize(int)xIntForm=intHex(xArray,16)转换了它/感谢您的帮助,我使用了上面的pandas方法,然后使用vectorize进行转换。