+ 不支持的操作数类型:'numpy.ndarray' 和 'str'
unsupported operand type(s) for +: 'numpy.ndarray' and 'str'
我想通过对 np.array(range(5)).astype(str)
给出的整个数组进行操作来获得结果 array(['0th', '1th', '2th', '3th', '4th'])
。我试过这个:
>>> np.array(range(5))
array([0, 1, 2, 3, 4])
>>> np.array(range(5))*2
array([0, 2, 4, 6, 8])
>>> np.array(range(5)).astype(str)
array(['0', '1', '2', '3', '4'],
dtype='<U24')
>>> np.array(range(5)).astype(str)+"th"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'str'
我知道我可以使用列表理解来做到这一点:
[ x+"th" for x in np.array(range(5)).astype(str) ] # can get the result,
但我更喜欢矢量化的方式来做同样的事情,例如:
pandas.date_range("20150105",periods=16*7,freq="D").format(formatter=lambda x:x.strftime("%Y%m%d"))
这可能吗?
可能的解决方案:
>>> np.array([str(a) + 'th' for a in range(5)])
array(['0th', '1th', '2th', '3th', '4th'],
dtype='|S3')
你可以这样做:
>>> np.core.defchararray.add(np.arange(5).astype(str), 'th')
array(['0th', '1th', '2th', '3th', '4th'],
dtype='|S26')
目前我的电脑中没有 Numpy 包,所以我无法真正测试,但这是我的第一个想法。
np.array(range(5)).astype(str)
似乎 return 一个 ndarray
形式的元素 ndarray(list, str)
这行得通吗?:
print [ x+"th" for x in np.array(range(5)).astype(str)[0] ]
我想通过对 np.array(range(5)).astype(str)
给出的整个数组进行操作来获得结果 array(['0th', '1th', '2th', '3th', '4th'])
。我试过这个:
>>> np.array(range(5))
array([0, 1, 2, 3, 4])
>>> np.array(range(5))*2
array([0, 2, 4, 6, 8])
>>> np.array(range(5)).astype(str)
array(['0', '1', '2', '3', '4'],
dtype='<U24')
>>> np.array(range(5)).astype(str)+"th"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'str'
我知道我可以使用列表理解来做到这一点:
[ x+"th" for x in np.array(range(5)).astype(str) ] # can get the result,
但我更喜欢矢量化的方式来做同样的事情,例如:
pandas.date_range("20150105",periods=16*7,freq="D").format(formatter=lambda x:x.strftime("%Y%m%d"))
这可能吗?
可能的解决方案:
>>> np.array([str(a) + 'th' for a in range(5)])
array(['0th', '1th', '2th', '3th', '4th'],
dtype='|S3')
你可以这样做:
>>> np.core.defchararray.add(np.arange(5).astype(str), 'th')
array(['0th', '1th', '2th', '3th', '4th'],
dtype='|S26')
目前我的电脑中没有 Numpy 包,所以我无法真正测试,但这是我的第一个想法。
np.array(range(5)).astype(str)
似乎 return 一个 ndarray
形式的元素 ndarray(list, str)
这行得通吗?:
print [ x+"th" for x in np.array(range(5)).astype(str)[0] ]