更改numpy数组的第一列

时间:2018-02-16 13:20:44

标签: python arrays numpy

如何转换这个numpy数组:

array = np.array([[np.array([1]),2],[np.array([1]),2],[np.array([1]),2]])
print (array)
[[array([1]) 2]
 [array([1]) 2]
 [array([1]) 2]]

到这个numpy数组:

print(array)
[[1 2]
 [1 2]
 [1 2]]

如果没有for循环,我怎样才能做到这一点?

这是我尝试的但它不起作用:

first_col = array[:,0]
first_col = np.array([i[0] for i in first_col])

3 个答案:

答案 0 :(得分:2)

我甚至不知道回答这个问题是否是一个好主意,因为在设计中必须存在一个根本性的缺陷,甚至想出这样的情况,正确的解决方案是修复它,而不是试图通过转换输出来缓解这个问题。

从未如此,有趣的是,根据数据,可以使用numpy数组方法.astype()“解包”结构:

import numpy as np
array = np.array([[np.array([1]),2],[np.array([1]),2],[np.array([1]),2]])
array = array.astype(int) # alt array = array.astype(float)

但是,如上所述,这是在解决问题的症状,而不是问题本身。

答案 1 :(得分:0)

尝试使用void **将其转换为列表:

#define myfree(ptr) do { free(ptr); ptr = NULL; } while (0)

答案 2 :(得分:0)

这是一种方式。

import numpy as np

arr = np.array([[np.array([1]),2],
                [np.array([1]),2],
                [np.array([1]),2]])

np.array([[i[0][0], i[1]] for i in arr])

# array([[1, 2],
#        [1, 2],
#        [1, 2]])