Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays 将数组片分配给unicode值时出现问题_Arrays_Python 2.7_Numpy_Unicode_Slice - Fatal编程技术网

Arrays 将数组片分配给unicode值时出现问题

Arrays 将数组片分配给unicode值时出现问题,arrays,python-2.7,numpy,unicode,slice,Arrays,Python 2.7,Numpy,Unicode,Slice,我试图使用切片表示法将numpy数组中的多个条目分配给单个unicode值(来自另一个数组),但如下面的代码段所示,我得到的是垃圾: >>> import numpy as np >>> a = np.array([u'America/Los_Angeles']*3) >>> a array([u'America/Los_Angeles', u'America/Los_Angeles', u'America/Los_Angele

我试图使用切片表示法将numpy数组中的多个条目分配给单个unicode值(来自另一个数组),但如下面的代码段所示,我得到的是垃圾:

>>> import numpy as np
>>> a = np.array([u'America/Los_Angeles']*3)
>>> a
array([u'America/Los_Angeles', u'America/Los_Angeles',
       u'America/Los_Angeles'],
      dtype='<U19')
>>> s = np.zeros(10,dtype=a.dtype)
>>> s
array([u'', u'', u'', u'', u'', u'', u'', u'', u'', u''],
      dtype='<U19')
>>> s[0:2] = a[0]
>>> s
array([ u'\uf300\udc41\uf440\udc65\uf080\udc69\ue380\udc61\uf380\udc4c\uef80\udc73\uf340\udc41\uf100\udc67\uf100\udc6cs\uf8ad\ude98\u7ff5\x00\x00\x01\x00\x02\ud7bf\udfff\uf77c\udc30',
       u'\uf300\udc41\uf440\udc65\uf080\udc69\ue380\udc61\uf380\udc4c\uef80\udc73\uf340\udc41\uf100\udc67\uf100\udc6cs\uf8ad\ude98\u7ff5\x00\x00\x01\x00\x02\ud7bf\udfff\uf77c\udc30',
       u'', u'', u'', u'', u'', u'', u'', u''],
      dtype='<U19')
>>将numpy作为np导入
>>>a=np.数组([u'America/Los_Angeles']*3)
>>>a
数组([u'America/Los_Angeles',u'America/Los_Angeles',
美国/洛杉矶]],

dtype='在PY2.7和Numpy1.9中,这是一个更紧凑的问题示例

In [126]: s=np.zeros(1,dtype='U10')

In [127]: s[:]=np.unicode_('abc')

In [128]: s
Out[128]: 
array([u'\uf040\udc61c\ua982\udee8'], 
      dtype='<U10')

这感觉像是以前提出过的问题,无论是在这里还是作为numpy bug。但我还没有找到它。也许将一个数组值分配给另一个切片的任务是不寻常的,尤其是在Py2中使用unicode字符串时。

在Py2.7中,numpy 1.9是一个更简洁的问题示例

In [126]: s=np.zeros(1,dtype='U10')

In [127]: s[:]=np.unicode_('abc')

In [128]: s
Out[128]: 
array([u'\uf040\udc61c\ua982\udee8'], 
      dtype='<U10')

这感觉像是以前提出过的问题,无论是在这里还是作为numpy bug。但我还没有找到它。也许将一个数组值分配给另一个片段的任务是不寻常的,尤其是在Py2中使用unicode字符串时。

使用Python3.4和numpy 1.8.2,我得到了您期望的
s
(py3没有显示
u
,但它仍然是
U19
)。在Py2.7,np 1.9中,我通过
a[0]
获得此错误,但不通过
a[[0]]
a[0]。项()
。换言之,当赋值类型为
np.unicode\uu
时,但如果赋值类型为
np.ndarray
unicode
,则不会。谢谢。我使用了一个.item(0);简单而通用。使用Python3.4和numpy 1.8.2,我可以得到预期的
s
(py3没有显示
u
,但它仍然是
U19
)。在Py2.7,np 1.9中,我用
a[0]
得到这个错误,但不是用
a[[0]]
a[0].item()
。换句话说,当赋值是type
np.unicode\uu
时,但如果它是
np.ndarray
unicode
。谢谢。我用的是.item(0);简单而通用。
In [129]: s[0]=np.unicode_('abc')

In [130]: s
Out[130]: 
array([u'abc'], 
      dtype='<U10')

In [131]: s[:]=u'abc'

In [132]: s
Out[132]: 
array([u'abc'], 
      dtype='<U10')
In [154]: s=np.zeros(1,dtype='U3')

In [155]: s[:]=np.unicode_('abc')

In [156]: s
Out[156]: 
array([u'\uf040\udc61c\ua982\udcd0'], 
      dtype='<U3')

In [157]: s.view('U1')
Out[157]: 
array([u'\uf040\udc61', u'c', u'\ua982\udcd0'], 
      dtype='<U1')

In [158]: s.view('S1')
Out[158]: 
array(['a', '', 'b', '', 'c', '', '', '', '\xd0', '\x08', 'G', '\xb7'], 
      dtype='|S1')

In [159]: s.view('S12')
Out[159]: 
array(['a\x00b\x00c\x00\x00\x00\xd0\x08G\xb7'], 
      dtype='|S12')

In [176]: np.array(u'abc').view('S12')
Out[176]: 
array('a\x00\x00\x00b\x00\x00\x00c', 
      dtype='|S12')