如何转换这个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])
答案 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]])