我创建了一个2d Numpy字符串数组,如下所示:
a = np.full((2, 3), '#', dtype=np.unicode)
print(a)
输出为:
^{pr2}$我想加上“?”宽度为1的所有边。我希望输出为:
array([
['?', '?', '?', '?', '?'],
['?', '#', '#', '#', '?'],
['?', '#', '#', '#', '?'],
['?', '#', '#', '#', '?'],
['?', '?', '?', '?', '?']],
dtype=`'<U1')
我尝试了以下方法:
b = np.pad(a, ((1, 1), (1, 1)), 'constant', constant_values=(('?', '?'), ('?', '?')))
但这会产生以下错误:
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/numpy/lib/arraypad.py", line 1357, in pad
cast_to_int=False)
File "/usr/lib/python3/dist-packages/numpy/lib/arraypad.py", line 1069, in _normalize_shape
return tuple(tuple(axis) for axis in arr.tolist())
AttributeError: 'tuple' object has no attribute 'tolist'
类似的代码也适用于整数。我怎么把弦弄错了?在
不能用字符串文字填充数组。如文档中所述,您可以使用
pad_with
函数,如下所示:注意,在
^{pr2}$pad_with
函数的pad_value = kwargs.get('padder', '?')
行中,您应该使用默认的填充值,以防np.pad
的调用程序中没有提供填充参数。您可以将预期的padder
作为关键字参数传递给函数。在即使可以让
pad
工作,将a
插入空白b
也会更快。pad
是为复杂的填充模式而设置的,它以迭代的方式执行任务—行一行,列一列。在这是一个聪明的
^{pr2}$pad_with
解决方案,添加了一个打印,这样我们就可以看到它被调用的频率:相关问题 更多 >
编程相关推荐