如何正确使用 Python 标量?
how to make use of Python scalars correctly?
>>> numpy.sin(range(11))
array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025
-0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.4121184
-0.54402111])
>>> numpy.array(range(11))*2
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
>>> str(numpy.array(range(11))... )
'[ 0 1 2 3 4 5 6 7 8 9 10]'
如何获取 ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] 具有 python 标量的概念,例如 numpy.sin(range(11)) 或 numpy.array(range(11))*2?
我可以通过以下方式做到这一点:
>>> s=[]
>>> [s.append(str(i)) for i in range(11)]
>>> s
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
>>> str(numpy.array(range(11)))
'[ 0 1 2 3 4 5 6 7 8 9 10]'
我要的是['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] ,而不是 '[ 0 1 2 3 4 5 6 7 8 9 10]' .
用list comprehension的概念得到字符串数组,如何用--python标量的概念来完成工作?
这就是您要找的全部吗?
#Python2
map(str, range(11))
#Python3
list(map(str, range(11)))
我想这就是你想要的:
>>> a = numpy.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a.astype(str)
array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
dtype='|S21')
你的术语有点混乱。
Python
没有标量。它的基本对象是数字、字符串和列表。列表可能是字符串列表、数字列表或混合列表。
numpy
在 Python
的基础上添加了多维数组的概念。通常这些数组的元素是数字。 numpy
数组可能包含单个数字(0 维)。 Numpy
文档通过将后者称为 'scalar'.
来区分这样的数组和 'plain' Python 数字
但您真正想问的是一种显示 numpy 数组的方法。
In [156]: a=np.arange(10) # a numpy array of integers
In [157]: str(a)
Out[157]: '[0 1 2 3 4 5 6 7 8 9]' # a string representation of that array
In [158]: a.tolist()
Out[158]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # a list of numbers
In [159]: str(a.tolist())
Out[159]: '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]' # a string representation of that list
In [160]: [str(i) for i in a]
Out[160]: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] # a list of strings
In [161]: ', '.join(_)
Out[161]: '0, 1, 2, 3, 4, 5, 6, 7, 8, 9' # join the strings into one
In [169]: a.astype(str)
Out[169]: array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='|S24')
# an array of strings
不要混淆数组(或任何 Python 对象)的显示方式(转换为字符串)与数组的性质。在处理像数组或列表这样的复合对象时,将对象作为一个整体表示的方式与其元素的表示方式有所不同。
在你的例子中
>>> s=[]
>>> [s.append(str(i)) for i in range(11)]
您不需要追加。
s = [str(i) for i in range(11)]
自动建立列表。实际上,列表推导式是以下的紧凑且快速的版本:
s = []
for i in range(11):
s.append(str(i))
map
也可以,但是 Python 开发人员鼓励我们使用理解。
>>> numpy.sin(range(11))
array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025
-0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.4121184
-0.54402111])
>>> numpy.array(range(11))*2
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
>>> str(numpy.array(range(11))... )
'[ 0 1 2 3 4 5 6 7 8 9 10]'
如何获取 ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] 具有 python 标量的概念,例如 numpy.sin(range(11)) 或 numpy.array(range(11))*2?
我可以通过以下方式做到这一点:
>>> s=[]
>>> [s.append(str(i)) for i in range(11)]
>>> s
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
>>> str(numpy.array(range(11)))
'[ 0 1 2 3 4 5 6 7 8 9 10]'
我要的是['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] ,而不是 '[ 0 1 2 3 4 5 6 7 8 9 10]' .
用list comprehension的概念得到字符串数组,如何用--python标量的概念来完成工作?
这就是您要找的全部吗?
#Python2
map(str, range(11))
#Python3
list(map(str, range(11)))
我想这就是你想要的:
>>> a = numpy.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a.astype(str)
array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
dtype='|S21')
你的术语有点混乱。
Python
没有标量。它的基本对象是数字、字符串和列表。列表可能是字符串列表、数字列表或混合列表。
numpy
在 Python
的基础上添加了多维数组的概念。通常这些数组的元素是数字。 numpy
数组可能包含单个数字(0 维)。 Numpy
文档通过将后者称为 'scalar'.
但您真正想问的是一种显示 numpy 数组的方法。
In [156]: a=np.arange(10) # a numpy array of integers
In [157]: str(a)
Out[157]: '[0 1 2 3 4 5 6 7 8 9]' # a string representation of that array
In [158]: a.tolist()
Out[158]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # a list of numbers
In [159]: str(a.tolist())
Out[159]: '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]' # a string representation of that list
In [160]: [str(i) for i in a]
Out[160]: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] # a list of strings
In [161]: ', '.join(_)
Out[161]: '0, 1, 2, 3, 4, 5, 6, 7, 8, 9' # join the strings into one
In [169]: a.astype(str)
Out[169]: array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='|S24')
# an array of strings
不要混淆数组(或任何 Python 对象)的显示方式(转换为字符串)与数组的性质。在处理像数组或列表这样的复合对象时,将对象作为一个整体表示的方式与其元素的表示方式有所不同。
在你的例子中
>>> s=[]
>>> [s.append(str(i)) for i in range(11)]
您不需要追加。
s = [str(i) for i in range(11)]
自动建立列表。实际上,列表推导式是以下的紧凑且快速的版本:
s = []
for i in range(11):
s.append(str(i))
map
也可以,但是 Python 开发人员鼓励我们使用理解。