@@ -90,6 +90,52 @@ def test_svd_no_uv(self):
90
90
assert_equal (np .linalg .matrix_rank (a ), 1 )
91
91
assert_array_less (1 , np .linalg .norm (a , ord = 2 ))
92
92
93
+ def test_norm_object_array (self ):
94
+ # gh-7575
95
+ testvector = np .array ([np .array ([0 , 1 ]), 0 , 0 ], dtype = object )
96
+
97
+ norm = linalg .norm (testvector )
98
+ assert_array_equal (norm , [0 , 1 ])
99
+ self .assertEqual (norm .dtype , np .dtype ('float64' ))
100
+
101
+ norm = linalg .norm (testvector , ord = 1 )
102
+ assert_array_equal (norm , [0 , 1 ])
103
+ self .assertNotEqual (norm .dtype , np .dtype ('float64' ))
104
+
105
+ norm = linalg .norm (testvector , ord = 2 )
106
+ assert_array_equal (norm , [0 , 1 ])
107
+ self .assertEqual (norm .dtype , np .dtype ('float64' ))
108
+
109
+ self .assertRaises (ValueError , linalg .norm , testvector , ord = 'fro' )
110
+ self .assertRaises (ValueError , linalg .norm , testvector , ord = 'nuc' )
111
+ self .assertRaises (ValueError , linalg .norm , testvector , ord = np .inf )
112
+ self .assertRaises (ValueError , linalg .norm , testvector , ord = - np .inf )
113
+ self .assertRaises ((AttributeError , DeprecationWarning ),
114
+ linalg .norm , testvector , ord = 0 )
115
+ self .assertRaises (ValueError , linalg .norm , testvector , ord = - 1 )
116
+ self .assertRaises (ValueError , linalg .norm , testvector , ord = - 2 )
117
+
118
+ testmatrix = np .array ([[np .array ([0 , 1 ]), 0 , 0 ],
119
+ [0 , 0 , 0 ]], dtype = object )
120
+
121
+ norm = linalg .norm (testmatrix )
122
+ assert_array_equal (norm , [0 , 1 ])
123
+ self .assertEqual (norm .dtype , np .dtype ('float64' ))
124
+
125
+ norm = linalg .norm (testmatrix , ord = 'fro' )
126
+ assert_array_equal (norm , [0 , 1 ])
127
+ self .assertEqual (norm .dtype , np .dtype ('float64' ))
128
+
129
+ self .assertRaises (TypeError , linalg .norm , testmatrix , ord = 'nuc' )
130
+ self .assertRaises (ValueError , linalg .norm , testmatrix , ord = np .inf )
131
+ self .assertRaises (ValueError , linalg .norm , testmatrix , ord = - np .inf )
132
+ self .assertRaises (ValueError , linalg .norm , testmatrix , ord = 0 )
133
+ self .assertRaises (ValueError , linalg .norm , testmatrix , ord = 1 )
134
+ self .assertRaises (ValueError , linalg .norm , testmatrix , ord = - 1 )
135
+ self .assertRaises (TypeError , linalg .norm , testmatrix , ord = 2 )
136
+ self .assertRaises (TypeError , linalg .norm , testmatrix , ord = - 2 )
137
+ self .assertRaises (ValueError , linalg .norm , testmatrix , ord = 3 )
138
+
93
139
94
140
if __name__ == '__main__' :
95
141
run_module_suite ()
0 commit comments