我需要将B转换为1-D数组 我有一个矩阵,我试图转向一维数组。 但是我得到一个带有1个单元的数组,它保存着1-D数组。 我该如何解决?
Python CODE:
import numpy as np
def computecoreset():
a = np.matrix('1 2 19 22; 3 4 28 11')
B = a.ravel()
cal = np.random.choice(B, 3)
return cal
print(computecoreset())
然而:
B = [[ 1 2 19 22 3 4 28 11]]
与
不一样[ 1 2 19 22 3 4 28 11]
提前致谢
答案 0 :(得分:1)
a.ravel()
作为NumPy matrix
的方法仍会将其保留为矩阵,而NumPy矩阵不能为1D
。所以,我们可以使用NumPy's ravel()
方法转换为扁平的1D NumPy数组,就像这样 -
np.ravel(a)
示例运行 -
In [40]: a
Out[40]:
matrix([[ 1, 2, 19, 22],
[ 3, 4, 28, 11]])
In [41]: np.ravel(a)
Out[41]: array([ 1, 2, 19, 22, 3, 4, 28, 11])
答案 1 :(得分:0)
使用np.array
定义2D数组。
将数据指定为字符串的额外方便,如示例所示,并且对于附加到matrix
对象的2D数组有一些适当的方法,至少在我看来,由于它的微小灵活性而失去平衡。后一种数据结构,特别是涉及matrix
导致matrix
结果的大多数表达式,即使这不是您正在寻找的结果。
matrix
个对象时,双矩阵乘积即标量是2D矩阵,您将看到以下重复的习语
x = np.matrix('1;2;3')
K = np.matrix('1 2 3; 2 4 5; 3 5 6')
V = 0.5 * (x.T*K*x)[0,0]
当你想要弹性系统的应变能表示为独立浮点值时。
另请注意,使用array
s,您无需再编写
V = 0.5*np.dot(x.T, np.dot(K, x))
但您可以使用新语法
V = 0.5 * x.T@K@x
也就是说,如果您仍然需要matrix
,则the answer Divakar正是您想要的,而您接受它是正确的。