Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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数组?_Python_Arrays_Formatting_Numpy - Fatal编程技术网

Python 如何在没有任何额外符号(方括号[]和元素之间的空格)的情况下打印Numpy数组?

Python 如何在没有任何额外符号(方括号[]和元素之间的空格)的情况下打印Numpy数组?,python,arrays,formatting,numpy,Python,Arrays,Formatting,Numpy,我有一个二维numpy数组,看起来像这样: [[a b c] [d e f] [g h i]] abc def ghi 我希望打印它时不带任何默认的符号绒毛,这些绒毛通常与数组一起出现;即[,]和元素之间的空格。大概是这样的: [[a b c] [d e f] [g h i]] abc def ghi 有可能做到这一点吗(当然,不需要一个简单且可能昂贵的Python循环) 我已经看过了,但它看起来只是为元素的显示方式设置了表示选项,而不是中间的字符 编辑:数组中的元素具有可以是任

我有一个二维numpy数组,看起来像这样:

[[a b c]
 [d e f]
 [g h i]]
abc
def
ghi
我希望打印它时不带任何默认的符号绒毛,这些绒毛通常与数组一起出现;即
[
]
和元素之间的空格。大概是这样的:

[[a b c]
 [d e f]
 [g h i]]
abc
def
ghi
有可能做到这一点吗(当然,不需要一个简单且可能昂贵的Python循环)

我已经看过了,但它看起来只是为元素的显示方式设置了表示选项,而不是中间的字符

编辑:数组中的元素具有可以是任何内容的字符串表示形式,包括
[
]
和空格。关于如何构建这样一个阵列的最简单示例:

class custom(object):
    def __repr__(self):
        return 'a'
a = numpy.empty((5, 5), custom)
a.fill(custom())
print a

虽然这相当于一个循环,但我认为这可能是你能得到的最好结果。通常,
join
string方法非常快

>>> a = np.array([[1,2,3],[2,4,6],[-1,-2,-3]])
>>> print '\n'.join(''.join(str(cell) for cell in row) for row in a)
123
246
-1-2-3

我认为在这一点上,你最好实施一些东西,并测量它需要多长时间。我的猜测是,代码最慢的部分实际上是打印到控制台,而不是将字符串连接在一起。

这很简单,如果数组是
a
,请执行以下操作:

np.savetxt(sys.stdout.buffer, a, fmt='%s', delimiter='')
print(re.sub('[ ]+', ' ', re.sub(' *[\\[\\]] *', '', np.array_str(a))))

+1,因为它确实回答了我提出的问题,但所讨论的实际数组使用自定义数据类型,其字符串表示形式可以是任何形式,包括空格和括号。编辑问题以反映this@Etienne佩罗-回到绘图板上!需要明确的是:您的定制repr包含一个您想要摆脱的终端
,但可能包含其他您不想要的终端?我不确定我是否理解你想要剥掉的东西。我的错是,这是因为我手工编辑的表现。我最初的问题使用了一个规则数的numpy数组,每个数字后面都有一个
,用作分隔符(或十进制分隔符,不确定)。后来,我编辑了我的问题,以反映数组的数据类型不一定是数字的,并且忘记了相应地更改分隔符。再次编辑。子集:仅删除
[]
:好吧,我想这意味着没有“numpy方法”可以做到这一点。不管怎样,谢谢你在
sys.stdout.buffer
上真的需要
.buffer
吗?@CiroSantilli烏坎事件2016六四事件法轮功, savetxt写入bytestring,因此需要一个二进制文件